@@ -1950,7 +1950,88 @@ void func_800899BC(s_SysWork_2514* arg0, s32 arg1) // 0x800899BC
19501950 }
19511951}
19521952
1953- INCLUDE_ASM ("asm/bodyprog/nonmatchings/bodyprog_80085D78" , func_80089A30 ); // 0x80089A30
1953+ bool func_80089A30 (s_SysWork_2514 * arg0 , s_func_8009ECCC * arg1 , s_8002AC04 * arg2 , u32 * arg3 ) // 0x80089A30
1954+ {
1955+ s32 temp_s3 ;
1956+ s_SysWork_2514_18 * next ;
1957+ s_SysWork_2514_18 * head ;
1958+ s_SysWork_2514_18 * current ;
1959+ s_func_8009ECCC * ptr ;
1960+
1961+ ptr = arg1 ;
1962+
1963+ if (arg0 == NULL )
1964+ {
1965+ return false;
1966+ }
1967+
1968+ if (arg2 == NULL )
1969+ {
1970+ return false;
1971+ }
1972+
1973+ if (arg2 -> field_4 .funcIdx_4 != 0 )
1974+ {
1975+ return false;
1976+ }
1977+
1978+ temp_s3 = arg2 -> field_4 .func_80089A30_data .field_8 ;
1979+
1980+ if (arg2 -> field_4 .func_80089A30_data .field_5_5 || arg2 -> field_4 .func_80089A30_data .field_5_6 )
1981+ {
1982+ current = arg0 -> head_18 .next_0 ;
1983+ head = & arg0 -> head_18 ;
1984+
1985+ if (arg2 -> field_4 .func_80089A30_data .field_5_5 )
1986+ {
1987+ while (current != head )
1988+ {
1989+ if (current -> field_C == temp_s3 )
1990+ {
1991+ if (ptr != NULL )
1992+ {
1993+ ptr -> field_10 = NULL ;
1994+ }
1995+ return false;
1996+ }
1997+ current = current -> next_0 ;
1998+ }
1999+ }
2000+ else
2001+ {
2002+ while (current != head )
2003+ {
2004+ next = current -> next_0 ;
2005+ if ((ptr == NULL || current != ptr ) && current -> field_C == temp_s3 )
2006+ {
2007+ func_8009EC1C (arg0 , current );
2008+ }
2009+ current = next ;
2010+ }
2011+ }
2012+ }
2013+
2014+ if (ptr == NULL )
2015+ {
2016+ ptr = func_8009ECCC (arg0 , arg2 -> field_4 .func_80089A30_data .field_C );
2017+ if (ptr == NULL )
2018+ {
2019+ return false;
2020+ }
2021+ ptr -> field_14_16 = * arg3 ;
2022+ }
2023+
2024+ ptr -> field_10 = arg2 -> field_0 ;
2025+ ptr -> field_14_0 = 0 ;
2026+ ptr -> field_C = temp_s3 ;
2027+
2028+ if (arg2 -> field_4 .func_80089A30_data .field_5_7 )
2029+ {
2030+ ptr -> field_1C = arg2 -> field_4 .func_80089A30_data .field_6 ;
2031+ }
2032+
2033+ return true;
2034+ }
19542035
19552036bool func_80089BB8 (s_SysWork_2514 * arg0 , s_func_8009ECCC * arg1 , s_8002AC04 * arg2 , u32 * arg3 ) // 0x80089BB8
19562037{
0 commit comments