Function at 0x408f90
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 0x41e458
mov eax, dword fs:[0]
push eax
sub esp, 0xe0
mov eax, dword [0x425ed0]
xor eax, esp
mov dword [esp + 0xd8], eax
push ebx
push esi
push edi
mov eax, dword [0x425ed0]
xor eax, esp
push eax
lea eax, [esp + 0xf0]
mov dword fs:[0], eax
fldz
xor esi, esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x2c], esi
fst dword [esp + 0x70]
fldz
xor eax, eax
fstp qword [esp + 0x3c]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], esi
fst dword [esp + 0x20]
fst dword [esp + 0x18]
fst dword [esp + 0x74]
fstp dword [esp + 0x28]
mov word [esp + 0x30], ax
fld dword [0x41f980]
fstp dword [0x423340]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x1c], ecx
fild dword [esp + 0x1c]
fld dword [esp + 0x28]
fsubr qword [0x41f978]
fsub qword [0x41f970]
fsubp st(1)
call fcn.0040b030
mov dword [esp + 0x24], eax
fld dword [esp + 0x28]
fadd qword [0x41f370]
mov dword [esp + 0xa0], 0xf
mov dword [esp + 0x9c], esi
mov byte [esp + 0x8c], 0
fstp dword [esp + 0x28]
push 0x118
mov dword [esp + 0xfc], esi
call fcn.0040b271
push eax
mov dword [esp + 0x80], eax
call fcn.00403e50
add esp, 8
push 0
call fcn.0040af5a
mov edi, edx
mov dx, word [0x425dc8]
mov esi, eax
movsx eax, dx
mov dword [esp + 0x20], eax
add esp, 4
mov dword [esp + 0x7c], esi
fild dword [esp + 0x1c]
mov dword [esp + 0x80], edi
fsub qword [esp + 0x3c]
call fcn.0040b030
mov ebx, dword [esp + 0x50]
cmp edi, ebx
mov word [0x425dc8], ax
fld qword [esp + 0x3c]
fsub qword [0x41f370]
fstp qword [esp + 0x3c]
jg 0x4090e7
jl 0x4090dd
cmp esi, dword [esp + 0x4c]
jae 0x4090e7
xor ebx, ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], ebx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x1c], ecx
fild dword [esp + 0x1c]
fld dword [esp + 0x28]
fadd qword [esp + 0x3c]
fadd qword [0x41f968]
fsubp st(1)
call fcn.0040b030
mov dword [esp + 0x48], eax
mov eax, esi
sub eax, dword [esp + 0x4c]
mov edx, edi
sbb edx, ebx
mov dword [esp + 0x58], edx
js 0x409b6d
jg 0x40912d
cmp eax, 0x708
jbe 0x409b6d
fld dword [0x4258ec]
mov dword [esp + 0x4c], esi
fsub qword [0x41f960]
shr esi, 9
push 0x408
lea ebx, [esi + 0x55]
fstp dword [0x4258ec]
push 0x425978
mov dword [esp + 0x58], edi
mov dword [esp + 0x24], 0
mov dword [esp + 0x68], esi
mov dword [esp + 0x5c], ebx
call fcn.00401cd0
push 0xd
push 0x424e54
mov dword [esp + 0x7c], eax
call fcn.00401cd0
mov edi, eax
push 0xaf1
push 0x4236c8
mov dword [esp + 0x28], edi
call fcn.00401cd0
push 0x31e
push 0x423388
mov dword [esp + 0x88], eax
call fcn.00401cd0
fld dword [0x424218]
fsub qword [0x41f958]
add esp, 0x20
mov dword [esp + 0x64], eax
fsub qword [0x41f950]
fstp qword [0x424ed0]
cmp esi, ebx
je 0x4097f0
mov edi, edi
mov eax, dword [0x4276e0]
push 0
push eax
call fcn.00402ce0
add esp, 8
test eax, eax
jne 0x4091fa
mov ecx, dword [0x4276e8]
mov edx, dword [0x427224]
push ecx
push edx
call fcn.00402070
add esp, 8
fld dword [esp + 0x18]
mov eax, dword [esp + 0x48]
fsub qword [0x41f948]
mov dword [esp + 0x14], eax
fiadd dword [esp + 0x14]
fld qword [esp + 0x3c]
fsub qword [0x41f940]
fcompp
fnstsw ax
fld qword [esp + 0x3c]
fadd qword [0x41f370]
fstp qword [esp + 0x3c]
test ah, 1
jne 0x40926c
mov cx, word [0x4253bc]
movsx edx, cx
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fadd dword [esp + 0x70]
mov ax, word [0x423178]
movsx ecx, ax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
faddp st(1)
call fcn.0040b030
mov word [0x423178], ax
inc word [0x4253bc]
mov dx, word [0x425930]
mov ecx, dword [esp + 0x60]
movsx eax, dx
mov edx, dword [esp + 0x64]
add eax, 0x445c90c7
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x68]
push ecx
fild dword [esp + 0x18]
push edx
push eax
lea ecx, [esp + 0xb0]
fadd dword [esp + 0x24]
push ecx
fstp dword [esp + 0x28]
call fcn.004024f0
fld dword [esp + 0x28]
add esp, 0x10
fsubr qword [0x41f938]
fld dword [esp + 0x20]
fcompp
fnstsw ax
fld dword [esp + 0x20]
fld1
fadd st(1), st(0)
fxch st(1)
fstp dword [esp + 0x20]
test ah, 1
jne 0x4092f5
fld dword [0x425dc4]
fsub qword [0x41f930]
fsub dword [0x423328]
fstp dword [0x425940]
fadd dword [0x423328]
fstp dword [0x423328]
jmp 0x4092f7
fstp st(0)
push 0x8b
push 0x425050
call fcn.00401cd0
mov ebx, eax
mov eax, dword [esp + 0x18]
add esp, 8
mov dword [esp + 0x2c], 0xc03d6022
mov esi, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x409320
mov edi, ebx
sub eax, esi
dec edi
lea esp, [esp]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x409330
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
fld dword [0x4231d8]
fsub qword [0x41f928]
fld dword [esp + 0x20]
fcompp
fnstsw ax
test ah, 0x41
jp 0x40936d
fld dword [esp + 0x18]
fmul qword [0x41f920]
fstp dword [esp + 0x18]
push 0x2710
push 0
lea edx, [esp + 0x90]
push edx
lea eax, [esp + 0xb0]
push ebx
push eax
call fcn.00408720
fldz
mov ecx, dword [esp + 0x38]
imul ecx, ecx, 0xbe1828ae
mov dword [esp + 0x38], ecx
push 0x8b
fstp dword [esp + 0x2c]
push 0
fldz
push ebx
fstp qword [esp + 0x54]
call fcn.0040b0e0
push ebx
call fcn.0040b194
fld dword [esp + 0x38]
add esp, 0x24
fld dword [esp + 0x14]
fsub qword [0x41f3d0]
fsubp st(1)
fstp dword [esp + 0x14]
mov dx, word [0x423324]
mov ecx, dword [esp + 0x48]
movsx eax, dx
add ecx, eax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fld dword [0x423170]
fcompp
fnstsw ax
test ah, 1
jne 0x409403
fld qword [esp + 0x3c]
fadd qword [0x41f918]
fstp qword [esp + 0x3c]
mov eax, dword [esp + 0x8c]
mov edi, 0x10
cmp dword [esp + 0xa0], edi
jae 0x40941f
lea eax, [esp + 0x8c]
mov edx, dword [esp + 0x9c]
push edx
push eax
mov eax, dword [esp + 0x74]
push eax
call fcn.004080b0
movzx ecx, word [esp + 0x3c]
add ecx, 0x14e3af63
add esp, 0xc
cmp eax, 9
mov word [esp + 0x30], cx
jge 0x409477
mov edx, dword [0x4236b0]
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fadd qword [0x424e20]
fsub qword [0x41f910]
fmul dword [esp + 0x18]
fstp dword [esp + 0x18]
inc dword [0x4236b0]
jmp 0x40978a
mov ecx, dword [esp + 0x8c]
cmp dword [esp + 0xa0], edi
jae 0x40948e
lea ecx, [esp + 0x8c]
mov edx, dword [ecx]
xor ecx, ecx
cmp ecx, dword [esp + 0x80]
jl 0x40978a
jg 0x4094ab
cmp edx, dword [esp + 0x7c]
jb 0x40978a
lea esi, [eax - 1]
cmp esi, dword [esp + 0x9c]
jbe 0x4094bc
call fcn.0040bbc3
mov eax, dword [esp + 0x8c]
cmp dword [esp + 0xa0], edi
jae 0x4094d3
lea eax, [esp + 0x8c]
mov byte [eax + esi], 0
mov esi, dword [esp + 0xa0]
mov ebx, dword [esp + 0x8c]
mov eax, ebx
cmp esi, edi
jae 0x4094f2
lea eax, [esp + 0x8c]
lea ecx, [esp + 0xa4]
add eax, 8
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x409520
test dl, dl
je 0x40951c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x409520
add eax, 2
add ecx, 2
test dl, dl
jne 0x409500
xor eax, eax
jmp 0x409525
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40978a
cmp esi, edi
jb 0x40960a
mov edi, ebx
test ebx, ebx
je 0x409568
mov eax, ebx
cmp esi, 0x10
jae 0x409549
lea eax, [esp + 0x8c]
cmp eax, edi
ja 0x409568
mov eax, ebx
cmp esi, 0x10
jae 0x40955b
lea eax, [esp + 0x8c]
mov ecx, dword [esp + 0x9c]
add eax, ecx
cmp edi, eax
jbe 0x409574
call fcn.0040bbc3
mov ecx, dword [esp + 0x9c]
lea esi, [esp + 0x88]
mov ebx, edi
lea ecx, [ecx]
mov eax, dword [esp + 0xa0]
mov edx, dword [esp + 0x8c]
mov edi, edx
cmp eax, 0x10
jae 0x40959c
lea edi, [esp + 0x8c]
add edi, ecx
je 0x4095cb
cmp eax, 0x10
mov eax, edx
jae 0x4095ae
lea eax, [esp + 0x8c]
cmp eax, edi
ja 0x4095cb
cmp dword [esp + 0xa0], 0x10
mov eax, edx
jae 0x4095c5
lea eax, [esp + 0x8c]
add eax, ecx
cmp edi, eax
jbe 0x4095d0
call fcn.0040bbc3
cmp esi, 0xfffffffc
je 0x4095e9
test esi, esi
je 0x4095e4
lea eax, [esp + 0x88]
cmp esi, eax
je 0x4095e9
call fcn.0040bbc3
cmp ebx, edi
je 0x409694
cmp esi, 0xfffffffc
je 0x409627
test esi, esi
jne 0x4095ff
call fcn.0040bbc3
cmp dword [esi + 0x18], 0x10
jb 0x409616
mov eax, dword [esi + 4]
jmp 0x409619
lea edi, [esp + 0x8c]
jmp 0x40953b
lea eax, [esi + 4]
mov ecx, dword [esi + 0x14]
add ecx, eax
cmp ebx, ecx
jb 0x409627
call fcn.0040bbc3
fld dword [esp + 0x28]
mov byte [ebx], 0
fsub qword [0x41f908]
fstp dword [esp + 0x28]
cmp esi, 0xfffffffc
je 0x409662
test esi, esi
jne 0x409646
call fcn.0040bbc3
cmp dword [esi + 0x18], 0x10
jb 0x409651
mov eax, dword [esi + 4]
jmp 0x409654
lea eax, [esi + 4]
mov edx, dword [esi + 0x14]
add edx, eax
cmp ebx, edx
jb 0x409662
call fcn.0040bbc3
fld qword [0x4230a8]
mov eax, dword [0x4231d4]
fsubr qword [0x41f900]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
inc ebx
fmulp st(1)
call fcn.0040b030
mov ecx, dword [esp + 0x9c]
mov dword [0x4231d4], eax
jmp 0x409580
push 0x7e
push 0x425050
call fcn.00401cd0
push 0
push 0
lea ecx, [esp + 0x98]
push ecx
mov esi, eax
lea edx, [esp + 0xb8]
push esi
push edx
call fcn.00408720
fldz
push 0x7e
fstp dword [esp + 0x34]
fldz
push 0
fstp qword [esp + 0x58]
push esi
call fcn.0040b0e0
push esi
call fcn.0040b194
fld dword [esp + 0x40]
fld dword [esp + 0x40]
push 0xc
fsub qword [0x41f3d0]
push 0x423048
fsubp st(1)
fstp dword [esp + 0x48]
call fcn.00401cd0
add esp, 0x34
mov esi, eax
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x409700
sub eax, ecx
push eax
push 0xffffffffffffffff
push esi
lea ecx, [esp + 0x94]
call fcn.00404d40
fld dword [0x4241e8]
fsub qword [0x41f370]
mov edi, eax
xor eax, eax
push esi
fstp dword [0x4241e8]
fld dword [0x4241e8]
fsub qword [0x41f8f8]
fsub dword [esp + 0x78]
fmul dword [0x423340]
fstp dword [0x423340]
mov dword [esi], eax
fldz
mov dword [esi + 4], eax
fstp dword [esp + 0x18]
mov dword [esi + 8], eax
fldz
fstp qword [esp + 0x38]
call fcn.0040b194
fld dword [esp + 0x18]
fld dword [esp + 0x18]
add esp, 4
fsub qword [0x41f3d0]
mov eax, dword [esp + 0x9c]
add eax, 0xfffffff5
fsubp st(1)
fstp dword [esp + 0x14]
cmp edi, eax
je 0x40979f
mov eax, dword [esp + 0x60]
inc eax
mov dword [esp + 0x60], eax
cmp eax, dword [esp + 0x54]
jne 0x4091d0
jmp 0x4097ec
mov ecx, dword [0x4236b0]
mov edx, 0x89abc553
mov esi, 1
add dword [0x4236b0], esi
sub edx, ecx
cmp edx, 0x32ad195f
jg 0x4097c7
add dword [esp + 0x24], 0x1c176563
push 0xb
push edi
lea ecx, [esp + 0x90]
call fcn.00406040
movzx eax, word [0x424ee8]
sub eax, 0x4910a883
mov word [0x424ee8], ax
mov dword [esp + 0x1c], esi
mov edi, dword [esp + 0x10]
fldz
mov esi, dword [esp + 0x6c]
push 0x408
fstp dword [esp + 0x14]
fldz
push 0
fstp qword [esp + 0x3c]
push esi
call fcn.0040b0e0
push esi
call fcn.0040b194
fld dword [esp + 0x20]
fld dword [esp + 0x20]
xor eax, eax
fsub qword [0x41f3d0]
mov dword [edi], eax
mov dword [edi + 4], eax
mov dword [edi + 8], eax
fsubp st(1)
push edi
mov byte [edi + 0xc], al
fstp dword [esp + 0x24]
fldz
fstp dword [esp + 0x24]
fldz
fstp qword [esp + 0x48]
call fcn.0040b194
fld dword [esp + 0x24]
fld dword [esp + 0x24]
mov esi, dword [esp + 0x78]
fsub qword [0x41f3d0]
push 0x31e
push 0
push esi
fsubp st(1)
fstp dword [esp + 0x30]
fldz
fstp dword [esp + 0x30]
fldz
fstp qword [esp + 0x54]
call fcn.0040b0e0
push esi
call fcn.0040b194
fld dword [esp + 0x34]
fld dword [esp + 0x34]
fsub qword [0x41f3d0]
fsubp st(1)
fstp dword [esp + 0x34]
fld qword [0x423040]
fsub qword [0x41f8f0]
fadd dword [0x4230c4]
mov cx, word [0x424ee8]
movsx edx, cx
mov dword [esp + 0x78], edx
fild dword [esp + 0x78]
faddp st(1)
call fcn.0040b030
mov esi, dword [esp + 0x8c]
mov word [0x424ee8], ax
fld dword [0x4230c4]
fadd qword [0x41f370]
push 0xaf1
push 0
push esi
fstp dword [0x4230c4]
fldz
fstp dword [esp + 0x40]
fldz
fstp qword [esp + 0x64]
call fcn.0040b0e0
push esi
call fcn.0040b194
fld dword [esp + 0x44]
fld dword [esp + 0x44]
push 0x40
fsub qword [0x41f3d0]
push 0
lea eax, [esp + 0xe0]
push eax
fsubp st(1)
fstp dword [esp + 0x50]
call fcn.0040b0e0
add esp, 0x40
cmp dword [esp + 0x1c], 0
je 0x409b6d
mov ecx, dword [esp + 0x78]
push 0x708
push ecx
call fcn.00402940
add esp, 8
cmp dword [esp + 0x9c], 0x200
jbe 0x409b6d
push 0x370
call fcn.0040b271
mov edx, dword [0x425db0]
mov ebx, eax
mov ax, word [0x425930]
mov dword [esp + 0x58], edx
fild dword [esp + 0x58]
movsx ecx, ax
mov dword [esp + 0x58], ecx
add esp, 4
fild dword [esp + 0x54]
fadd dword [esp + 0x20]
fsubp st(1)
call fcn.0040b030
mov dword [0x425db0], eax
fld dword [esp + 0x20]
fadd qword [0x41f370]
push ebx
push 0xeb
fstp dword [esp + 0x28]
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
push ebx
call fcn.00401d90
push 3
push 0x425304
call fcn.00401cd0
mov esi, eax
push esi
push ebx
call fcn.0040ba4f
fldz
mov dx, word [0x4231dc]
movzx ecx, word [0x4230ec]
mov edi, eax
movsx eax, dx
sub ecx, eax
add ecx, 0x9f44fef
mov word [0x4230ec], cx
xor eax, eax
fstp dword [esp + 0x28]
mov word [esi], ax
fldz
push esi
fstp qword [esp + 0x50]
mov byte [esi + 2], al
call fcn.0040b194
add esp, 0x1c
fld dword [esp + 0x10]
fld dword [esp + 0x10]
cmp dword [esp + 0xa0], 0x10
fsub qword [0x41f3d0]
mov eax, dword [esp + 0x8c]
fsubp st(1)
fstp dword [esp + 0x10]
jae 0x409a35
lea eax, [esp + 0x8c]
mov edx, dword [esp + 0x9c]
push edi
push 1
push edx
push eax
call fcn.0040b909
push edi
call fcn.0040b72b
add esp, 0x14
push 0x104
lea eax, [ebx + 0x104]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x15
push 0x4241f4
call fcn.00401cd0
push 0x20
push 0x42307c
mov edi, eax
call fcn.00401cd0
mov esi, eax
mov eax, dword [0x4276e0]
push eax
push esi
lea eax, [ebx + 0x104]
push eax
push edi
lea eax, [ebx + 0x208]
push 0x168
push eax
call fcn.0040bfb9
fldz
xor eax, eax
fstp dword [esp + 0x38]
fldz
mov dword [esi], eax
mov dword [esi + 4], eax
fstp qword [esp + 0x5c]
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
push esi
mov dword [esi + 0x1c], eax
call fcn.0040b194
fld dword [esp + 0x3c]
fld dword [esp + 0x3c]
xor eax, eax
fsub qword [0x41f3d0]
mov dword [edi], eax
mov dword [edi + 4], eax
mov dword [edi + 8], eax
fsubp st(1)
mov dword [edi + 0xc], eax
mov dword [edi + 0x10], eax
push edi
fstp dword [esp + 0x40]
mov byte [edi + 0x14], al
fldz
fstp dword [esp + 0x40]
fldz
fstp qword [esp + 0x64]
call fcn.0040b194
fld dword [esp + 0x40]
fld dword [esp + 0x40]
push 1
fsub qword [0x41f3d0]
mov ecx, dword [0x4276e0]
push ecx
fsubp st(1)
fstp dword [esp + 0x48]
call fcn.00402ce0
lea eax, [ebx + 0x208]
push eax
push ebx
call fcn.00402070
add esp, 0x40
push 0x370
push 0
push ebx
call fcn.0040b0e0
push ebx
call fcn.0040b194
add esp, 0x10
push 0x15f90
call dword [sym.imp.KERNEL32.dll_Sleep]
mov dx, word [0x424f04]
mov ecx, dword [esp + 0x2c]
movsx eax, dx
add ecx, eax
mov word [0x424f04], cx
push 0x3e8
mov dword [0x42589c], 0x4c0f8398
call dword [sym.imp.KERNEL32.dll_Sleep]
mov edx, dword [0x4276e0]
push 0
push edx
call fcn.00402ce0
add esp, 8
test eax, eax
jne 0x409085
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 0x2c]
mov ecx, dword [0x4276e8]
mov edx, dword [0x427224]
push ecx
push edx
mov dword [esp + 0x34], eax
call fcn.00402070
jmp 0x409082