Function at 0x409b70
Capabilities:
Get common file path
Set current directory

Disassembly:
sub esp, 0x818
mov eax, dword [0x614b80]
xor eax, esp
mov dword [esp + 0x814], eax
push ebp
lea eax, [esp + 0x418]
push eax
push 0x200
call dword [sym.imp.KERNEL32.DLL_GetCurrentDirectoryW]
lea ecx, [esi + 0xb8]
push ecx
call dword [sym.imp.KERNEL32.DLL_SetCurrentDirectoryW]
push str.rt_ccsUNICODE
lea edx, [esp + 0xc]
push str.cpuz.ini
push edx
call fcn.00579b2a
xor ebp, ebp
add esp, 0xc
cmp dword [esp + 8], ebp
je 0x40aa10
push edi
lea esp, [esp]
mov eax, dword [esp + 0xc]
push eax
lea ecx, [esp + 0x20]
push 0xff
push ecx
call fcn.0057a0f4
lea edx, [esp + 0x28]
push str._CPU_Z_
push edx
mov edi, eax
call fcn.00579e54
add esp, 0x14
test eax, eax
jne 0x409c05
cmp edi, ebp
jne 0x409bd0
jmp 0x40aa02
mov ecx, dword [esp + 0xc]
push ecx
lea edx, [esp + 0x20]
push 0xff
push edx
call fcn.0057a0f4
add esp, 0xc
test eax, eax
je 0x40aa02
mov edi, 1
push ebx
lea ebx, [ebx]
lea eax, [esp + 0x20]
push str.VERSION
push eax
call fcn.00579e54
add esp, 8
test eax, eax
je 0x409cb3
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x30]
push str.VERSION_d._d._d._d
push edx
call fcn.0057a0d2
add esp, 0x18
cmp eax, 4
jne 0x40a9e2
mov eax, dword [esi + 0x8d0]
mov ecx, dword [eax]
cmp ecx, dword [esp + 0xc]
jne 0x40aa01
mov edx, dword [eax + 4]
cmp edx, dword [esp + 0x18]
jne 0x40aa01
mov ecx, dword [eax + 8]
cmp ecx, dword [esp + 0x14]
jne 0x40aa01
mov edx, dword [eax + 0xc]
cmp edx, dword [esp + 0x1c]
jne 0x40aa01
jmp 0x40a9e2
lea eax, [esp + 0x20]
push str.TextFontSize
push eax
call fcn.00579e54
add esp, 8
test eax, eax
je 0x409cf7
lea ecx, [esp + 0xc]
push ecx
lea edx, [esp + 0x24]
push str.TextFontSize_d
push edx
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a9e2
mov eax, dword [esp + 0xc]
mov dword [esi + 0xd2c], eax
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.LabelFontSize
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x409d3b
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.LabelFontSize_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a9e2
mov ecx, dword [esp + 0xc]
mov dword [esi + 0xd28], ecx
jmp 0x40a9e2
lea edx, [esp + 0x20]
push str.TextFontColor
push edx
call fcn.00579e54
add esp, 8
lea ecx, [esp + 0x20]
test eax, eax
je 0x409d9a
lea eax, [esp + 0xc]
push eax
push str.TextFontColor_X
push ecx
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a9e2
mov eax, dword [esp + 0xc]
mov edx, eax
sar edx, 8
movzx ecx, dl
movzx edx, al
shl edx, 8
sar eax, 0x10
or ecx, edx
movzx eax, al
shl ecx, 8
or ecx, eax
mov dword [esi + 0xd30], ecx
jmp 0x40a9e2
push str.LabelFontColor
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x409df5
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.LabelFontColor_X
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a9e2
mov eax, dword [esp + 0xc]
mov ecx, eax
sar ecx, 8
movzx edx, cl
movzx ecx, al
shl ecx, 8
sar eax, 0x10
or edx, ecx
movzx eax, al
shl edx, 8
or edx, eax
mov dword [esi + 0xd34], edx
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.ACPI
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x409e9a
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.ACPI_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x409e3e
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd38], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x409e72
mov dword [esi + 0xd38], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd38], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push 0x5cc264
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x409f3f
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.DMI_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x409ee3
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd3c], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x409f17
mov dword [esi + 0xd3c], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd3c], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.Sensor
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x409fe4
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.Sensor_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x409f88
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd48], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x409fbc
mov dword [esi + 0xd48], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd48], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.SMBus
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a089
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.SMBus_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a02d
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd44], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a061
mov dword [esi + 0xd44], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd44], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.Display
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a12e
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.Display_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a0d2
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd4c], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a106
mov dword [esi + 0xd4c], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd4c], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.UseDisplayAPI
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a1d3
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.UseDisplayAPI_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a177
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd64], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a1ab
mov dword [esi + 0xd64], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd64], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.RemoveService
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a278
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.RemoveService_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a21c
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd78], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a250
mov dword [esi + 0xd78], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd78], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.MaxPCIBus
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a2e0
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.MaxPCIBus_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a9e2
mov eax, dword [esp + 0xc]
cmp eax, edi
mov dword [esi + 0xd80], eax
jge 0x40a2c1
mov dword [esi + 0xd80], edi
cmp dword [esi + 0xd80], 0x100
jle 0x40a9e2
mov dword [esi + 0xd80], 0x100
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push 0x5cc39c
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a385
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.LPCIO_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a329
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd5c], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a35d
mov dword [esi + 0xd5c], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd5c], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.SMART
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a3fe
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.SMART_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a3ca
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd58], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a443
mov dword [esi + 0xd58], edi
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.AMDI2C
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a46b
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.AMDI2C_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a3ca
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd60], ecx
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd58], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push 0x5cc408
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
lea eax, [esp + 0x20]
je 0x40a52c
lea edx, [esp + 0xc]
push edx
push str.PCI_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a4d0
mov eax, dword [esp + 0xc]
cmp eax, ebp
mov dword [esi + 0xd84], eax
jge 0x40a4b4
mov dword [esi + 0xd84], ebp
cmp dword [esi + 0xd84], 2
jle 0x40a9e2
mov dword [esi + 0xd84], 2
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov ecx, ebx
push 0x5cc254
push ecx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a504
mov dword [esi + 0xd84], edi
jmp 0x40a9e2
lea edx, [esp + 0x220]
push 0x5cc25c
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd84], ebp
jmp 0x40a9e2
push str.BusClock
push eax
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a571
lea ecx, [esp + 0xc]
push ecx
lea edx, [esp + 0x24]
push str.BusClock_d
push edx
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a9e2
xor eax, eax
cmp dword [esp + 0xc], ebp
setne al
mov dword [esi + 0xd68], eax
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push 0x5cc44c
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a616
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.Chipset_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a5ba
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd50], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a5ee
mov dword [esi + 0xd50], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd50], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.SPD
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a6bb
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.SPD_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a65f
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd54], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a693
mov dword [esi + 0xd54], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd54], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.XOC
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a760
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.XOC_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a704
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd70], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a738
mov dword [esi + 0xd70], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd70], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.XOC2
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a805
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.XOC2_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a7a9
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd74], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a7dd
mov dword [esi + 0xd74], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd74], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.CheckUpdates
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a8aa
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.CheckUpdates_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a84e
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [esi + 0xd7c], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov edx, ebx
push 0x5cc254
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a882
mov dword [esi + 0xd7c], edi
jmp 0x40a9e2
lea eax, [esp + 0x220]
push 0x5cc25c
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov dword [esi + 0xd7c], ebp
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.ValidUsername
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a8f3
push 0x28
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov eax, dword [esi + 0x8cc]
mov edx, ebx
push edx
add eax, 0x604
push 0x200
push eax
call fcn.00439b90
add esp, 0xc
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.ValidEmail
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a93a
push 0x28
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov eax, dword [esi + 0x8cc]
mov edx, ebx
push edx
add eax, 4
push 0x200
push eax
call fcn.00439b90
add esp, 0xc
jmp 0x40a9e2
lea ecx, [esp + 0x20]
push str.ValidPublish
push ecx
call fcn.00579e54
add esp, 8
test eax, eax
je 0x40a9e2
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x24]
push str.ValidPublish_d
push eax
call fcn.0057a0d2
add esp, 0xc
cmp eax, edi
jne 0x40a986
mov edx, dword [esi + 0x8cc]
xor ecx, ecx
cmp dword [esp + 0xc], ebp
setne cl
mov dword [edx + 0xa58], ecx
jmp 0x40a9e2
push 0xff
lea ebx, [esp + 0x224]
lea eax, [esp + 0x24]
call fcn.00409af0
mov eax, ebx
push 0x5cc254
push eax
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9bd
mov ecx, dword [esi + 0x8cc]
mov dword [ecx + 0xa58], edi
jmp 0x40a9e2
lea edx, [esp + 0x220]
push 0x5cc25c
push edx
call fcn.0057a1b5
add esp, 8
test eax, eax
jne 0x40a9e2
mov eax, dword [esi + 0x8cc]
mov dword [eax + 0xa58], ebp
mov ecx, dword [esp + 0x10]
push ecx
lea edx, [esp + 0x24]
push 0xff
push edx
call fcn.0057a0f4
add esp, 0xc
test eax, eax
jne 0x409c30
pop ebx
mov eax, dword [esp + 0xc]
push eax
call fcn.00579bf4
add esp, 4
pop edi
mov ecx, dword [esp + 0x818]
pop ebp
xor ecx, esp
call fcn.0057943e
add esp, 0x818
ret