Function at 0x409200
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 0x41ea28
mov eax, dword fs:[0]
push eax
sub esp, 0xd8
mov eax, dword [0x426070]
xor eax, esp
mov dword [esp + 0xd0], eax
push ebx
push esi
push edi
mov eax, dword [0x426070]
xor eax, esp
push eax
lea eax, [esp + 0xe8]
mov dword fs:[0], eax
fldz
xor eax, eax
fst qword [esp + 0x34]
xor ecx, ecx
mov word [esp + 0x24], ax
mov word [esp + 0x28], cx
mov dword [esp + 0x2c], eax
fst qword [esp + 0x64]
fstp qword [esp + 0x74]
mov dword [esp + 0x40], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x50], eax
mov edx, dword [esp + 0x40]
cmp edx, 0x89d3eab1
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
jge 0x409296
fld qword [0x424c20]
fmul qword [0x41f960]
fstp qword [0x424c20]
mov dword [esp + 0x98], 0xf
mov dword [esp + 0x94], eax
mov byte [esp + 0x84], al
push 0x118
mov dword [esp + 0xf4], eax
call fcn.0040b711
push eax
mov dword [esp + 0x84], eax
call fcn.004038a0
add esp, 8
push 0
call fcn.0040b52a
mov esi, dword [esp + 0x4c]
add esp, 4
cmp edx, esi
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], edx
jg 0x409300
jl 0x4092f2
cmp eax, dword [esp + 0x44]
jae 0x409300
xor esi, esi
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], esi
mov ecx, eax
sub ecx, dword [esp + 0x44]
mov edi, edx
sbb edi, esi
mov dword [esp + 0x20], edi
js 0x409de6
jg 0x409322
cmp ecx, 0x708
jbe 0x409de6
mov cx, word [0x423ba4]
mov dword [esp + 0x48], edx
mov dx, word [0x425f20]
mov dword [esp + 0x44], eax
mov dword [esp + 0x60], 0
cmp dx, cx
jne 0x409367
mov ecx, dword [0x42596c]
fld dword [0x423500]
mov dx, word [0x425e6c]
fstp st(0)
mov ecx, dword [esp + 0x30]
dec word [0x425e6c]
jmp 0x4093a4
fld dword [0x423500]
mov edx, dword [esp + 0x30]
mov cx, word [0x424b50]
fstp st(0)
mov edx, dword [esp + 0x18]
fld dword [0x423500]
fsub qword [0x41f350]
mov ecx, 1
fstp dword [0x423500]
add dword [esp + 0x30], ecx
dec word [0x424b50]
add dword [esp + 0x18], ecx
mov esi, eax
shr esi, 9
push 0x408
lea ebx, [esi + 0x55]
push 0x425a00
mov dword [esp + 0x60], esi
mov dword [esp + 0x24], ebx
call fcn.004026c0
push 0xd
push 0x424b34
mov dword [esp + 0x6c], eax
call fcn.004026c0
mov edi, eax
push 0xaf1
push 0x424c40
mov dword [esp + 0x6c], edi
call fcn.004026c0
push 0x31e
push 0x4231b0
mov dword [esp + 0x90], eax
call fcn.004026c0
add esp, 0x20
mov dword [esp + 0x6c], eax
cmp esi, ebx
je 0x409961
lea ecx, [ecx]
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x40]
push 0
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
or eax, 0xffffffff
fmul qword [0x424868]
fstp qword [0x424868]
add dword [esp + 0x1c], eax
add dword [esp + 0x44], eax
mov ecx, dword [0x427880]
push ecx
call fcn.004014b0
add esp, 8
test eax, eax
jne 0x409461
mov edx, dword [0x427888]
mov eax, dword [0x4273c4]
push edx
push eax
call fcn.004010c0
add esp, 8
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x70]
push ecx
push edx
push eax
lea ecx, [esp + 0xa8]
push ecx
call fcn.004036d0
push 0x8b
push 0x423538
call fcn.004026c0
inc dword [esp + 0x40]
fld qword [esp + 0x4c]
mov dx, word [esp + 0x40]
fsub qword [0x41f958]
mov cx, word [esp + 0x40]
mov ebx, eax
movsx eax, dx
mov dword [esp + 0x2c], eax
movsx edx, cx
fild dword [esp + 0x2c]
mov eax, 0xade579b8
sub eax, edx
fsubp st(1)
mov dword [esp + 0x2c], eax
add esp, 0x18
fild dword [esp + 0x14]
fcompp
fnstsw ax
fld qword [esp + 0x34]
fld1
fsub st(1), st(0)
fxch st(1)
fstp qword [esp + 0x34]
test ah, 5
jp 0x409533
fsubr dword [0x425e2c]
fstp dword [0x425e2c]
fld dword [0x424aac]
fld dword [0x425e2c]
fadd qword [0x41f950]
fsubp st(1)
fcomp qword [0x41f948]
fnstsw ax
test ah, 0x44
jnp 0x409535
fld qword [0x425970]
mov ecx, dword [0x4234fc]
fadd qword [0x41f940]
mov dword [esp + 0x18], ecx
fild dword [esp + 0x18]
faddp st(1)
call fcn.0040bbe0
mov dword [esp + 0x18], eax
jmp 0x409535
fstp st(0)
mov eax, dword [esp + 0x54]
mov edi, eax
jmp 0x409540
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x409540
sub eax, edi
mov esi, edi
mov edi, ebx
dec edi
mov edi, edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x409550
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
push 0x2710
push 0
lea edx, [esp + 0x88]
push edx
mov ecx, eax
lea eax, [esp + 0xa8]
and ecx, 3
push ebx
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.004087c0
xor ecx, ecx
fldz
push 0x8b
push ecx
mov word [esp + 0x30], cx
fstp dword [esp + 0x30]
push ebx
call fcn.0040bb50
mov edx, dword [0x424b30]
sub dword [0x423bdc], edx
push ebx
call fcn.0040b634
movzx eax, word [0x423128]
imul eax, eax, 0x194db85e
add esp, 0x24
cmp dword [esp + 0x98], 0x10
mov word [0x423128], ax
mov eax, dword [esp + 0x84]
jae 0x4095dc
lea eax, [esp + 0x84]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x5c]
push ecx
push eax
push edx
call fcn.00408480
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x38]
sub edx, ecx
mov dword [esp + 0x20], edx
fild dword [esp + 0x20]
add esp, 0xc
fmul qword [0x4230e8]
fstp qword [0x4230e8]
dec dword [esp + 0x50]
cmp eax, 9
jl 0x409931
mov ecx, dword [esp + 0x84]
mov edi, 0x10
cmp dword [esp + 0x98], edi
jae 0x409639
lea ecx, [esp + 0x84]
mov edx, dword [ecx]
xor ecx, ecx
cmp ecx, dword [esp + 0x78]
jg 0x40969d
jl 0x40964b
cmp edx, dword [esp + 0x74]
jae 0x40969d
fld dword [0x424870]
fadd qword [0x41f938]
fsub qword [0x41f930]
fcomp qword [esp + 0x64]
fnstsw ax
test ah, 5
jp 0x40968e
fld qword [esp + 0x34]
mov eax, dword [esp + 0x18]
fadd qword [0x41f928]
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
faddp st(1)
call fcn.0040bbe0
mov dword [esp + 0x18], eax
jmp 0x409931
fld qword [0x41f920]
fstp qword [esp + 0x64]
jmp 0x409931
lea esi, [eax - 1]
cmp esi, dword [esp + 0x94]
jbe 0x4096ae
call fcn.0040c37f
mov eax, dword [esp + 0x84]
cmp dword [esp + 0x98], edi
jae 0x4096c5
lea eax, [esp + 0x84]
mov byte [eax + esi], 0
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x84]
mov eax, ebx
cmp esi, edi
jae 0x4096e4
lea eax, [esp + 0x84]
lea ecx, [esp + 0x9c]
add eax, 8
mov edi, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x409710
test dl, dl
je 0x40970c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x409710
add eax, 2
add ecx, 2
test dl, dl
jne 0x4096f0
xor eax, eax
jmp 0x409715
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x409931
cmp esi, edi
jb 0x4097f9
mov edi, ebx
test ebx, ebx
je 0x409758
mov eax, ebx
cmp esi, 0x10
jae 0x409739
lea eax, [esp + 0x84]
cmp eax, edi
ja 0x409758
mov eax, ebx
cmp esi, 0x10
jae 0x40974b
lea eax, [esp + 0x84]
mov ecx, dword [esp + 0x94]
add eax, ecx
cmp edi, eax
jbe 0x409764
call fcn.0040c37f
mov ecx, dword [esp + 0x94]
lea esi, [esp + 0x80]
mov ebx, edi
mov edx, dword [esp + 0x98]
mov eax, dword [esp + 0x84]
cmp edx, 0x10
jae 0x409787
lea eax, [esp + 0x84]
lea edi, [eax + ecx]
test edi, edi
je 0x4097be
mov eax, dword [esp + 0x84]
cmp edx, 0x10
jae 0x4097a1
lea eax, [esp + 0x84]
cmp eax, edi
ja 0x4097be
mov eax, dword [esp + 0x84]
cmp edx, 0x10
jae 0x4097b8
lea eax, [esp + 0x84]
add eax, ecx
cmp edi, eax
jbe 0x4097c3
call fcn.0040c37f
cmp esi, 0xfffffffc
je 0x4097dc
test esi, esi
je 0x4097d7
lea ecx, [esp + 0x80]
cmp esi, ecx
je 0x4097dc
call fcn.0040c37f
cmp ebx, edi
je 0x409850
cmp esi, 0xfffffffc
je 0x409816
test esi, esi
jne 0x4097ee
call fcn.0040c37f
cmp dword [esi + 0x18], 0x10
jb 0x409805
mov eax, dword [esi + 4]
jmp 0x409808
lea edi, [esp + 0x84]
jmp 0x40972b
lea eax, [esi + 4]
mov edx, dword [esi + 0x14]
add edx, eax
cmp ebx, edx
jb 0x409816
call fcn.0040c37f
mov byte [ebx], 0
cmp esi, 0xfffffffc
je 0x409843
test esi, esi
jne 0x409827
call fcn.0040c37f
cmp dword [esi + 0x18], 0x10
jb 0x409832
mov eax, dword [esi + 4]
jmp 0x409835
lea eax, [esi + 4]
mov ecx, dword [esi + 0x14]
add ecx, eax
cmp ebx, ecx
jb 0x409843
call fcn.0040c37f
mov ecx, dword [esp + 0x94]
inc ebx
jmp 0x40976d
push 0x7e
push 0x423538
call fcn.004026c0
push 0
push 0
lea edx, [esp + 0x90]
mov esi, eax
push edx
lea eax, [esp + 0xb0]
push esi
push eax
call fcn.004087c0
fldz
xor ecx, ecx
push 0x7e
push ecx
mov word [esp + 0x38], cx
fstp dword [esp + 0x38]
push esi
call fcn.0040bb50
mov edx, dword [0x424b30]
sub dword [0x423bdc], edx
push esi
call fcn.0040b634
push 0xc
push 0x4230f8
call fcn.004026c0
mov esi, eax
movzx eax, word [esp + 0x58]
add esp, 0x34
sub eax, 0x72f2108
mov word [esp + 0x24], ax
mov eax, esi
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4098c5
sub eax, ecx
push eax
push 0xffffffffffffffff
push esi
lea ecx, [esp + 0x8c]
call fcn.00404db0
fldz
mov edi, eax
xor eax, eax
mov dword [esi], eax
xor ecx, ecx
mov word [esp + 0x14], cx
fstp dword [esp + 0x14]
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov edx, dword [0x424b30]
sub dword [0x423bdc], edx
push esi
call fcn.0040b634
movzx eax, word [esp + 0x2c]
mov ecx, dword [0x4230f4]
mov edx, dword [esp + 0x98]
sub eax, ecx
sub eax, 0x531a87d6
add edx, 0xfffffff5
add esp, 4
mov word [esp + 0x28], ax
cmp edi, edx
je 0x409946
mov eax, dword [esp + 0x58]
inc eax
mov dword [esp + 0x58], eax
cmp eax, dword [esp + 0x1c]
jne 0x409410
jmp 0x40995d
push 0xb
push edi
lea ecx, [esp + 0x88]
call fcn.00406870
mov dword [esp + 0x60], 1
mov edi, dword [esp + 0x54]
fldz
mov esi, dword [esp + 0x5c]
xor eax, eax
push 0x408
push eax
mov word [esp + 0x1c], ax
fstp dword [esp + 0x24]
push esi
call fcn.0040bb50
mov ecx, dword [0x424b30]
sub dword [0x423bdc], ecx
push esi
call fcn.0040b634
mov dx, word [0x424c04]
movsx eax, dx
mov ecx, 0x2d370434
sub ecx, eax
add esp, 0x10
cmp ecx, 0xaa8c00b8
jle 0x4099d1
fld qword [0x423b38]
mov edx, dword [esp + 0x2c]
fsubr qword [0x41f918]
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fmulp st(1)
call fcn.0040bbe0
mov dword [esp + 0x2c], eax
jmp 0x4099ed
fld qword [esp + 0x34]
call fcn.0040bbe0
mov word [esp + 0x24], ax
fld qword [esp + 0x34]
fsub qword [0x41f350]
fstp qword [esp + 0x34]
fldz
xor eax, eax
mov dword [edi], eax
mov dword [edi + 4], eax
mov word [esp + 0x14], ax
fstp dword [esp + 0x1c]
mov dword [edi + 8], eax
mov byte [edi + 0xc], al
mov ecx, dword [0x424b30]
sub dword [0x423bdc], ecx
push edi
call fcn.0040b634
fldz
mov esi, dword [esp + 0x70]
xor edx, edx
push 0x31e
push edx
mov word [esp + 0x20], dx
fstp dword [esp + 0x28]
push esi
call fcn.0040bb50
mov eax, dword [0x424b30]
sub dword [0x423bdc], eax
push esi
call fcn.0040b634
fldz
mov esi, dword [esp + 0x84]
xor ecx, ecx
push 0xaf1
push ecx
mov word [esp + 0x30], cx
fstp dword [esp + 0x38]
push esi
call fcn.0040bb50
mov edx, dword [0x424b30]
sub dword [0x423bdc], edx
push esi
call fcn.0040b634
push 0x40
lea eax, [esp + 0xc4]
push 0
push eax
call fcn.0040bb50
add esp, 0x30
cmp dword [esp + 0x60], 0
je 0x409de6
mov ecx, dword [esp + 0x7c]
push 0x708
push ecx
call fcn.00404060
add esp, 8
cmp dword [esp + 0x94], 0x200
jbe 0x409d59
push 0x370
call fcn.0040b711
fld dword [0x4257d8]
fsub qword [0x41f350]
add esp, 4
mov ebx, eax
fstp dword [0x4257d8]
fld dword [0x425754]
fsub qword [0x41f910]
fadd dword [0x4257d8]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fmulp st(1)
call fcn.0040bbe0
mov dword [esp + 0x18], eax
mov ax, word [0x423b34]
mov cx, word [0x423b14]
cwde
movsx edx, cx
add edx, eax
mov dword [esp + 0x1c], edx
push ebx
push 0xeb
fild dword [esp + 0x24]
fadd dword [0x425754]
fstp dword [0x425754]
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
push ebx
call fcn.00402fa0
mov eax, dword [esp + 0x38]
add eax, 0x5f28b1ba
push 3
mov word [0x423504], ax
push 0x4234f0
call fcn.004026c0
mov esi, eax
push esi
push ebx
call fcn.0040c20b
fldz
mov edi, eax
xor eax, eax
xor ecx, ecx
mov word [esp + 0x2c], cx
fstp dword [esp + 0x34]
mov word [esi], ax
mov byte [esi + 2], al
mov edx, dword [0x424b30]
sub dword [0x423bdc], edx
push esi
call fcn.0040b634
mov eax, dword [esp + 0xa0]
add esp, 0x1c
cmp dword [esp + 0x98], 0x10
jae 0x409bab
lea eax, [esp + 0x84]
mov ecx, dword [esp + 0x94]
push edi
push 1
push ecx
push eax
call fcn.0040c5bd
push edi
call fcn.0040bdb1
fld dword [0x423ab0]
fadd qword [0x41f908]
add esp, 0x14
push 0x104
lea eax, [ebx + 0x104]
push eax
fstp dword [0x423ab0]
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x15
push 0x425794
call fcn.004026c0
push 0x20
push 0x4247f0
mov edi, eax
call fcn.004026c0
fld dword [0x424b2c]
mov edx, dword [0x423ba0]
fsubr qword [0x41f900]
mov dword [esp + 0x2c], edx
fild dword [esp + 0x2c]
mov esi, eax
fmulp st(1)
call fcn.0040bbe0
mov dword [0x423ba0], eax
mov eax, dword [0x427880]
push eax
push esi
lea eax, [ebx + 0x104]
push eax
push edi
lea eax, [ebx + 0x208]
push 0x168
push eax
call fcn.0040bc8b
fldz
xor eax, eax
mov dword [esi], eax
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
xor ecx, ecx
mov word [esp + 0x3c], cx
fstp dword [esp + 0x44]
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
mov edx, dword [0x424b30]
sub dword [0x423bdc], edx
push esi
call fcn.0040b634
fldz
xor eax, eax
mov dword [edi], eax
mov dword [edi + 4], eax
mov dword [edi + 8], eax
mov dword [edi + 0xc], eax
mov word [esp + 0x40], ax
fstp dword [esp + 0x48]
mov dword [edi + 0x10], eax
mov byte [edi + 0x14], al
mov ecx, dword [0x424b30]
sub dword [0x423bdc], ecx
push edi
call fcn.0040b634
mov edx, dword [0x427880]
push 1
push edx
call fcn.004014b0
lea eax, [ebx + 0x208]
push eax
push ebx
call fcn.004010c0
fld dword [0x424ba8]
fadd qword [0x425950]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x5c], eax
add esp, 0x40
fsub qword [0x41f8f8]
fild dword [esp + 0x1c]
fcompp
fnstsw ax
fld qword [0x425950]
fadd qword [0x41f350]
fstp qword [0x425950]
test ah, 1
jne 0x409d38
fld qword [0x424b98]
mov ecx, dword [0x425e74]
fsub qword [0x41f8f0]
mov dword [esp + 0x1c], ecx
fsub qword [0x41f8e8]
fild dword [esp + 0x1c]
faddp st(1)
call fcn.0040bbe0
mov dword [0x425e74], eax
push 0x370
push 0
push ebx
call fcn.0040bb50
push ebx
call fcn.0040b634
add esp, 0x10
push 0x15f90
call dword [sym.imp.KERNEL32.dll_Sleep]
fld qword [0x424b88]
fld1
fsub st(1), st(0)
fxch st(1)
fstp qword [0x424b88]
fld qword [esp + 0x64]
fadd qword [0x41f8e0]
fld qword [0x424b88]
fcompp
fnstsw ax
fld qword [esp + 0x64]
fsub st(1)
fstp qword [esp + 0x64]
test ah, 5
jp 0x409dc1
fadd qword [esp + 0x34]
fstp qword [esp + 0x34]
fld qword [esp + 0x34]
mov dx, word [0x423b34]
fsub qword [0x41f8d8]
movsx eax, dx
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
fmulp st(1)
call fcn.0040bbe0
mov word [0x423b34], ax
jmp 0x409de6
mov ecx, dword [esp + 0x2c]
fstp st(0)
mov edx, 0x8716b274
sub edx, ecx
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fadd qword [0x425760]
fstp qword [0x425760]
dec dword [esp + 0x2c]
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [0x427880]
push 0
push eax
call fcn.004014b0
add esp, 8
test eax, eax
jne 0x4092d0
mov ecx, dword [0x427888]
mov edx, dword [0x4273c4]
push ecx
push edx
call fcn.004010c0
jmp 0x4092cd