Function at 0x409430
Capabilities:
Get common file path
Resolve function by parsing pe exports
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x41ecb8
mov eax, dword fs:[0]
push eax
sub esp, 0xe8
mov eax, dword [0x425e80]
xor eax, esp
mov dword [esp + 0xe0], eax
push ebx
push esi
push edi
mov eax, dword [0x425e80]
xor eax, esp
push eax
lea eax, [esp + 0xf8]
mov dword fs:[0], eax
fldz
xor eax, eax
fst qword [esp + 0x6c]
xor esi, esi
mov word [esp + 0x30], ax
fst qword [esp + 0x84]
fldz
xor ebx, ebx
fst dword [esp + 0x1c]
mov dword [esp + 0x3c], ebx
fxch st(1)
mov dword [esp + 0x40], esi
mov dword [esp + 0x78], esi
fst qword [esp + 0x4c]
fxch st(1)
mov dword [esp + 0xa8], 0xf
fst dword [esp + 0x20]
mov dword [esp + 0xa4], esi
fstp dword [esp + 0x34]
mov byte [esp + 0x94], al
fst qword [esp + 0x84]
fstp qword [esp + 0x64]
push 0x118
mov dword [esp + 0x104], esi
call fcn.0040b98a
push eax
mov dword [esp + 0x7c], eax
call fcn.00403530
add esp, 8
lea esp, [esp]
push 0
call fcn.0040b7ba
add esp, 4
cmp edx, esi
mov edi, eax
mov dword [esp + 0x7c], edi
mov dword [esp + 0x80], edx
jg 0x40951d
jl 0x409511
cmp edi, ebx
jae 0x40951d
xor ebx, ebx
xor esi, esi
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], esi
mov eax, edi
sub eax, ebx
mov ecx, edx
sbb ecx, esi
mov dword [esp + 0x18], ecx
js 0x409f4d
jg 0x40953c
cmp eax, 0x708
jbe 0x409f4d
fld qword [esp + 0x4c]
mov dword [esp + 0x40], edx
fsub qword [0x41f988]
mov dword [esp + 0x3c], edi
mov dword [esp + 0x58], 0
fsub qword [esp + 0x84]
fmul qword [esp + 0x64]
fstp qword [esp + 0x64]
fld qword [esp + 0x4c]
fld1
fadd st(1), st(0)
fxch st(1)
fstp qword [esp + 0x4c]
fld qword [0x424dd0]
mov dx, word [0x423de4]
fsubr qword [0x41f980]
movsx eax, dx
mov dword [esp + 0x38], eax
fsub qword [0x41f978]
fild dword [esp + 0x38]
fmulp st(1)
call fcn.0040b890
mov word [0x423de4], ax
fadd qword [0x424dd0]
shr edi, 9
push 0x408
lea ebx, [edi + 0x55]
fstp qword [0x424dd0]
push 0x425938
mov dword [esp + 0x4c], edi
mov dword [esp + 0x1c], ebx
call fcn.004016a0
push 0xd
push 0x424d70
mov dword [esp + 0x70], eax
call fcn.004016a0
mov cx, word [0x4233bc]
movsx edx, cx
sub edx, 0x27c83e4f
add esp, 0x10
mov esi, eax
mov dword [esp + 0x48], esi
cmp edx, 0x4b5d147c
jne 0x409620
mov ax, word [esp + 0x30]
mov edx, dword [0x423de8]
movsx ecx, ax
lea eax, [ecx + edx - 0x4e5267c]
mov ecx, dword [0x424a44]
add ecx, eax
mov word [esp + 0x30], cx
push 0xaf1
push 0x424df0
call fcn.004016a0
push 0x31e
push 0x424a50
mov dword [esp + 0x48], eax
call fcn.004016a0
add esp, 0x10
mov dword [esp + 0x5c], eax
cmp edi, ebx
je 0x409b11
mov edx, dword [0x4233c4]
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
push 0
fadd qword [0x423df8]
fadd qword [0x41f970]
fadd qword [0x4258f8]
mov eax, dword [0x427680]
push eax
fstp qword [0x4258f8]
call fcn.00401830
add esp, 8
test eax, eax
jne 0x4096a1
mov ecx, dword [0x427688]
mov edx, dword [0x4271c4]
push ecx
push edx
call fcn.00401a90
add esp, 8
mov eax, dword [esp + 0x44]
fld dword [0x42337c]
mov ecx, dword [esp + 0x5c]
fsub qword [0x41f968]
mov edx, dword [esp + 0x38]
push eax
push ecx
fstp dword [0x42337c]
push edx
lea eax, [esp + 0xb8]
push eax
call fcn.00403960
push 0x8b
push 0x4233f0
call fcn.004016a0
mov ebx, eax
mov eax, dword [esp + 0x60]
add esp, 0x18
mov esi, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4096f0
mov edi, ebx
sub eax, esi
dec edi
lea esp, [esp]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x409700
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x2710
rep movsb byte es:[edi], byte [esi]
push 0
lea ecx, [esp + 0x98]
push ecx
lea edx, [esp + 0xb8]
push ebx
push edx
call fcn.00408a90
push 0x8b
fldz
push 0
fstp qword [esp + 0x40]
mov dword [esp + 0x40], 0
push ebx
call fcn.0040be70
fld qword [0x424d90]
push ebx
fadd qword [0x41f3b8]
fstp qword [0x424d90]
call fcn.0040bdc5
mov eax, dword [esp + 0xb8]
add esp, 0x24
cmp dword [esp + 0xa8], 0x10
jae 0x409781
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x60]
push ecx
push eax
push edx
call fcn.00408730
add esp, 0xc
cmp eax, 9
jl 0x409ac6
mov ecx, dword [esp + 0x94]
mov edi, 0x10
cmp dword [esp + 0xa8], edi
jae 0x4097bc
lea ecx, [esp + 0x94]
mov edx, dword [ecx]
xor ecx, ecx
cmp ecx, dword [esp + 0x80]
jl 0x409ac6
jg 0x4097d9
cmp edx, dword [esp + 0x7c]
jb 0x409ac6
lea esi, [eax - 1]
cmp esi, dword [esp + 0xa4]
jbe 0x4097ea
call fcn.0040c130
mov eax, dword [esp + 0x94]
cmp dword [esp + 0xa8], edi
jae 0x409801
lea eax, [esp + 0x94]
mov byte [eax + esi], 0
mov esi, dword [esp + 0xa8]
mov ebx, dword [esp + 0x94]
mov eax, ebx
cmp esi, edi
jae 0x409820
lea eax, [esp + 0x94]
lea ecx, [esp + 0xac]
add eax, 8
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x409850
test dl, dl
je 0x40984c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x409850
add eax, 2
add ecx, 2
test dl, dl
jne 0x409830
xor eax, eax
jmp 0x409855
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x409ac6
fld qword [0x41f960]
fstp qword [esp + 0x6c]
cmp esi, edi
jb 0x40998c
mov edi, ebx
test ebx, ebx
je 0x4098a2
mov eax, ebx
cmp esi, 0x10
jae 0x409883
lea eax, [esp + 0x94]
cmp eax, edi
ja 0x4098a2
mov eax, ebx
cmp esi, 0x10
jae 0x409895
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0xa4]
add eax, ecx
cmp edi, eax
jbe 0x4098ae
call fcn.0040c130
mov ecx, dword [esp + 0xa4]
lea esi, [esp + 0x90]
mov ebx, edi
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0x94]
cmp edx, 0x10
jae 0x4098d1
lea eax, [esp + 0x94]
lea edi, [eax + ecx]
test edi, edi
je 0x409908
mov eax, dword [esp + 0x94]
cmp edx, 0x10
jae 0x4098eb
lea eax, [esp + 0x94]
cmp eax, edi
ja 0x409908
mov eax, dword [esp + 0x94]
cmp edx, 0x10
jae 0x409902
lea eax, [esp + 0x94]
add eax, ecx
cmp edi, eax
jbe 0x40990d
call fcn.0040c130
cmp esi, 0xfffffffc
je 0x409926
test esi, esi
je 0x409921
lea eax, [esp + 0x90]
cmp esi, eax
je 0x409926
call fcn.0040c130
cmp ebx, edi
je 0x4099e3
fld dword [esp + 0x20]
mov cx, word [0x4258ec]
mov ax, word [0x42312c]
movsx edx, cx
mov dword [esp + 0x24], edx
movsx ecx, ax
fild dword [esp + 0x24]
mov dword [esp + 0x24], ecx
fsubp st(1)
fild dword [esp + 0x24]
fsubp st(1)
fmul qword [0x4239c8]
fstp qword [0x4239c8]
fld dword [esp + 0x20]
fsub qword [0x41f348]
fstp dword [esp + 0x20]
cmp esi, 0xfffffffc
je 0x4099a9
test esi, esi
jne 0x409981
call fcn.0040c130
cmp dword [esi + 0x18], 0x10
jb 0x409998
mov eax, dword [esi + 4]
jmp 0x40999b
lea edi, [esp + 0x94]
jmp 0x409875
lea eax, [esi + 4]
mov edx, dword [esi + 0x14]
add edx, eax
cmp ebx, edx
jb 0x4099a9
call fcn.0040c130
mov byte [ebx], 0
cmp esi, 0xfffffffc
je 0x4099d6
test esi, esi
jne 0x4099ba
call fcn.0040c130
cmp dword [esi + 0x18], 0x10
jb 0x4099c5
mov eax, dword [esi + 4]
jmp 0x4099c8
lea eax, [esi + 4]
mov ecx, dword [esi + 0x14]
add ecx, eax
cmp ebx, ecx
jb 0x4099d6
call fcn.0040c130
mov ecx, dword [esp + 0xa4]
inc ebx
jmp 0x4098b7
push 0x7e
push 0x4233f0
call fcn.004016a0
xor ebx, ebx
push ebx
push ebx
lea edx, [esp + 0xa0]
mov esi, eax
push edx
lea eax, [esp + 0xc0]
push esi
push eax
call fcn.00408a90
fldz
push 0x7e
fstp qword [esp + 0x44]
push ebx
mov dword [esp + 0x48], ebx
push esi
call fcn.0040be70
fld qword [0x424d90]
fadd qword [0x41f3b8]
push esi
fstp qword [0x424d90]
call fcn.0040bdc5
push 0xc
push 0x4231d8
call fcn.004016a0
add esp, 0x34
mov esi, eax
lea ecx, [eax + 1]
lea ebx, [ebx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x409a50
sub eax, ecx
push eax
push 0xffffffffffffffff
push esi
lea ecx, [esp + 0x9c]
call fcn.00404eb0
fldz
mov edi, eax
fstp qword [esp + 0x24]
xor eax, eax
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov dword [esp + 0x24], ebx
fld qword [0x424d90]
fadd qword [0x41f3b8]
push esi
fstp qword [0x424d90]
call fcn.0040bdc5
fld qword [0x423a00]
add esp, 4
fsub dword [esp + 0x34]
fstp qword [0x423a00]
fld dword [esp + 0x34]
mov ecx, dword [esp + 0xa4]
fsub qword [0x41f348]
add ecx, 0xfffffff5
fstp dword [esp + 0x34]
cmp edi, ecx
je 0x409adb
mov eax, dword [esp + 0x44]
inc eax
mov dword [esp + 0x44], eax
cmp eax, dword [esp + 0x14]
jne 0x409651
jmp 0x409b0d
push 0xb
push edi
lea ecx, [esp + 0x98]
call fcn.004061a0
mov eax, 1
add dword [0x423054], eax
mov edx, dword [0x423054]
mov dword [esp + 0x58], eax
mov eax, dword [0x4233d8]
imul edx, eax
mov dword [0x4233d8], edx
mov esi, dword [esp + 0x48]
fldz
mov ebx, dword [esp + 0x60]
xor edi, edi
fstp qword [esp + 0x14]
push 0x408
push edi
mov dword [esp + 0x1c], edi
push ebx
call fcn.0040be70
fld qword [0x424d90]
fadd qword [0x41f3b8]
push ebx
fstp qword [0x424d90]
call fcn.0040bdc5
fldz
xor eax, eax
mov dword [esi], eax
fstp qword [esp + 0x24]
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov byte [esi + 0xc], al
mov dword [esp + 0x24], edi
fld qword [0x424d90]
fadd qword [0x41f3b8]
push esi
fstp qword [0x424d90]
call fcn.0040bdc5
fldz
mov esi, dword [esp + 0x70]
push 0x31e
fstp qword [esp + 0x2c]
push edi
mov dword [esp + 0x30], edi
push esi
call fcn.0040be70
fld qword [0x424d90]
fadd qword [0x41f3b8]
push esi
fstp qword [0x424d90]
call fcn.0040bdc5
fldz
mov esi, dword [esp + 0x5c]
push 0xaf1
fstp qword [esp + 0x3c]
push edi
mov dword [esp + 0x40], edi
push esi
call fcn.0040be70
fld qword [0x424d90]
fadd qword [0x41f3b8]
push esi
fstp qword [0x424d90]
call fcn.0040bdc5
fld qword [esp + 0xa0]
fadd qword [0x41f348]
fstp qword [esp + 0xa0]
fld qword [esp + 0xa0]
fsub dword [0x423130]
fsub qword [0x41f958]
call fcn.0040b890
push 0x40
lea ecx, [esp + 0xe4]
push edi
push ecx
mov word [0x423040], ax
call fcn.0040be70
add esp, 0x40
cmp dword [esp + 0x58], edi
je 0x409f4d
mov edx, dword [esp + 0x74]
push 0x708
push edx
call fcn.00404090
add esp, 8
cmp dword [esp + 0xa4], 0x200
jbe 0x409f4d
push 0x370
call fcn.0040b98a
fld dword [esp + 0x24]
fadd qword [0x41f950]
add esp, 4
mov ebx, eax
push ebx
fadd dword [0x425934]
push 0xeb
fstp dword [0x425934]
fld dword [esp + 0x28]
fsub qword [0x41f348]
fstp dword [esp + 0x28]
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
push ebx
call fcn.00403ec0
push 3
push 0x423070
call fcn.004016a0
mov edi, eax
mov ax, word [0x424a28]
movsx ecx, ax
mov dword [esp + 0x24], ecx
add esp, 0x10
fild dword [esp + 0x14]
fsub dword [0x423d5c]
fld qword [esp + 0x4c]
mov edx, dword [0x4233c4]
dec word [0x424a28]
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
faddp st(2)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x409cf0
fld dword [esp + 0x34]
fsub qword [0x41f948]
fstp dword [esp + 0x34]
push edi
push ebx
call fcn.0040c6dd
fldz
mov esi, eax
fstp qword [esp + 0x1c]
xor eax, eax
mov word [edi], ax
mov dword [esp + 0x1c], eax
mov byte [edi + 2], al
fld qword [0x424d90]
fadd qword [0x41f3b8]
push edi
fstp qword [0x424d90]
call fcn.0040bdc5
mov eax, dword [esp + 0xa0]
add esp, 0xc
cmp dword [esp + 0xa8], 0x10
jae 0x409d3e
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0xa4]
push esi
push 1
push ecx
push eax
call fcn.0040c856
fld qword [0x423250]
fadd qword [0x41f348]
fstp qword [0x423250]
fld qword [0x423250]
mov dx, word [0x423d40]
fsub qword [0x41f940]
movsx eax, dx
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fmulp st(1)
call fcn.0040b890
mov word [0x423d40], ax
push esi
call fcn.0040c283
add esp, 0x14
push 0x104
lea eax, [ebx + 0x104]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x15
push 0x425910
call fcn.004016a0
push 0x20
push 0x423ca0
mov edi, eax
call fcn.004016a0
mov ecx, dword [0x427680]
push ecx
mov esi, eax
push esi
lea eax, [ebx + 0x104]
push eax
push edi
lea eax, [ebx + 0x208]
push 0x168
push eax
call fcn.0040bf24
fld dword [esp + 0x44]
fld1
add esp, 0x28
fadd st(1), st(0)
fxch st(1)
fstp dword [esp + 0x1c]
mov edx, dword [0x423d04]
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fld dword [esp + 0x1c]
fadd qword [0x41f938]
fld dword [0x4230b8]
faddp st(2)
fcompp
fnstsw ax
fld dword [0x4230b8]
fadd st(1)
fstp dword [0x4230b8]
inc dword [0x423d04]
test ah, 1
jne 0x409e72
mov ax, word [0x424d88]
movsx ecx, ax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fld dword [esp + 0x1c]
mov edx, dword [esp + 0x78]
fsub qword [0x41f930]
mov dword [esp + 0x14], edx
fiadd dword [esp + 0x14]
fsubp st(1)
call fcn.0040b890
mov word [0x424d88], ax
fsubr dword [esp + 0x1c]
fstp dword [esp + 0x1c]
jmp 0x409e74
fstp st(0)
fldz
xor eax, eax
mov dword [esi], eax
fstp qword [esp + 0x14]
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], eax
mov dword [esp + 0x14], eax
mov dword [esi + 0x1c], eax
fld qword [0x424d90]
fadd qword [0x41f3b8]
push esi
fstp qword [0x424d90]
call fcn.0040bdc5
fld dword [0x424a08]
xor eax, eax
fld qword [esp + 0x50]
push edi
fsub qword [0x41f928]
fsub qword [esp + 0x74]
fsubp st(1)
fstp dword [0x424a08]
fld qword [esp + 0x54]
mov dword [edi], eax
fsub qword [0x41f348]
mov dword [edi + 4], eax
mov dword [edi + 8], eax
mov dword [edi + 0xc], eax
fstp qword [esp + 0x54]
mov dword [edi + 0x10], eax
fldz
mov byte [edi + 0x14], al
fstp qword [esp + 0x1c]
mov dword [esp + 0x1c], 0
fld qword [0x424d90]
fadd qword [0x41f3b8]
fstp qword [0x424d90]
call fcn.0040bdc5
mov eax, dword [0x427680]
push 1
push eax
call fcn.00401830
lea eax, [ebx + 0x208]
push eax
push ebx
call fcn.00401a90
push 0x370
push 0
push ebx
call fcn.0040be70
push ebx
call fcn.0040bdc5
add esp, 0x28
push 0x15f90
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
fld dword [esp + 0x1c]
fsub qword [0x41f920]
push 0
fmul dword [esp + 0x20]
mov ecx, dword [0x427680]
push ecx
fstp dword [esp + 0x24]
call fcn.00401830
add esp, 8
test eax, eax
jne 0x409fdf
fld qword [esp + 0x64]
fadd qword [0x41f918]
fcomp qword [0x41f910]
fnstsw ax
fld qword [esp + 0x64]
fadd qword [0x41f348]
fstp qword [esp + 0x64]
test ah, 0x41
jne 0x409fca
mov edx, dword [0x423098]
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fstp dword [esp + 0x14]
fld dword [0x423a20]
fsubr dword [esp + 0x14]
call fcn.0040b890
mov dword [0x423098], eax
mov eax, dword [0x427688]
mov ecx, dword [0x4271c4]
push eax
push ecx
call fcn.00401a90
add esp, 8
dec word [0x4258f0]
mov dx, word [0x4258f0]
mov esi, dword [esp + 0x40]
mov ebx, dword [esp + 0x3c]
movsx eax, dx
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fstp dword [0x424a3c]
jmp 0x4094f0