Function at 0x40f690
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov esi, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
mov ebp, dword [esi]
mov esi, dword [esp + 0x78]
mov eax, dword [eax]
mov esi, dword [esi]
mov dword [esp + 4], 4
mov edi, eax
mov dword [esp], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x44], esi
call fcn.004534e0
cmp edi, 1
mov esi, eax
mov dword [esp + 0x30], eax
mov eax, edi
jbe 0x40ff3a
lea eax, [esi + eax*4]
mov ebx, ebp
lea edx, [esi + 4]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 1
mov dword [esp + 0x34], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], ebp
lea esi, [esi]
test byte [ebx + 0x54], 2
mov ebp, dword [ebx + 0x34]
jne 0x40f760
mov eax, dword [ebx + 0x2c]
cmp eax, 0x3e3
je 0x40fba3
jbe 0x40fb40
cmp eax, 0x4be
je 0x40fd05
jbe 0x40fbc0
cmp eax, 0x4fd
je 0x40fe85
cmp eax, 0x503
je 0x40fd22
cmp eax, 0x4c6
je 0x40f8d0
nop
add ebx, 0x2c
add edx, 4
cmp edx, dword [esp + 0x1c]
jne 0x40f710
mov ecx, dword [esp + 0x20]
xor edx, edx
mov edi, 1
mov eax, dword [esp + 0x24]
add eax, dword [esp + 0x3c]
add eax, dword [esp + 0x2c]
test ecx, ecx
mov ebp, dword [esp + 0x28]
setg dl
lea eax, [eax + edx*4 + 1]
imul eax, eax, 0x2c
lea ebx, [ebp + 0x2c]
mov dword [esp], eax
call fcn.004534b0
mov dword [esp + 0x24], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x28], 0
mov esi, eax
mov eax, dword [ebp]
mov dword [esi], eax
mov eax, dword [ebp + 4]
mov dword [esi + 4], eax
mov eax, dword [ebp + 8]
mov dword [esi + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [ebp + 0x10]
mov dword [esi + 0x10], eax
mov eax, dword [ebp + 0x14]
mov dword [esi + 0x14], eax
mov eax, dword [ebp + 0x18]
mov dword [esi + 0x18], eax
mov eax, dword [ebp + 0x1c]
mov dword [esi + 0x1c], eax
mov eax, dword [ebp + 0x20]
mov dword [esi + 0x20], eax
mov eax, dword [ebp + 0x24]
mov dword [esi + 0x24], eax
mov eax, dword [ebp + 0x28]
mov ebp, 1
mov dword [esi + 0x28], eax
nop
imul eax, edi, 0x2c
mov edx, dword [ebx]
add eax, esi
mov dword [eax], edx
mov edx, dword [ebx + 4]
mov dword [eax + 4], edx
mov edx, dword [ebx + 8]
mov dword [eax + 8], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [ebx + 0x10]
mov dword [eax + 0x10], edx
mov edx, dword [ebx + 0x14]
mov dword [eax + 0x14], edx
mov edx, dword [ebx + 0x18]
mov dword [eax + 0x18], edx
mov edx, dword [ebx + 0x1c]
mov dword [eax + 0x1c], edx
mov edx, dword [ebx + 0x20]
mov dword [eax + 0x20], edx
mov edx, dword [ebx + 0x24]
mov dword [eax + 0x24], edx
mov edx, dword [ebx + 0x28]
mov dword [eax + 0x28], edx
mov eax, dword [esp + 0x30]
mov edx, dword [eax + ebp*4]
mov eax, dword [esp + 0x28]
test eax, eax
je 0x40fc53
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x40fc32
mov eax, dword [esp + 0x24]
test eax, eax
je 0x40fc10
test dl, 2
je 0x40f9c1
mov ecx, dword [ebx + 8]
mov dword [esp + 0x38], edx
mov dword [esp], ecx
mov dword [esp + 0x34], ecx
call sub.msvcrt.dll_strlen
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
movzx eax, byte [ecx + eax - 1]
cmp al, 0x68
je 0x40fcc0
cmp al, 0x69
je 0x40fc74
cmp al, 0x63
je 0x40f900
mov dword [esp + 8], str.lang_specific_driver
mov dword [esp + 4], 0x140
mov dword [esp], str..._.._gcc_gcc_cp_gspec.c
call fcn.00424b40
lea esi, [esi]
mov esi, dword [esp + 0x20]
mov eax, 2
cmp esi, 0xffffffff
cmove eax, esi
add ebx, 0x2c
or dword [edx], 0x20
add edx, 4
cmp edx, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
jne 0x40f710
jmp 0x40f76c
lea eax, [edi + 1]
imul edi, edi, 0x2c
mov dword [esp + 0xc], 0x80000
mov dword [esp + 8], 1
mov dword [esp + 4], 0x48f8cc
add edi, esi
mov dword [esp + 0x10], edi
mov dword [esp], 0x4fd
mov dword [esp + 0x34], eax
call fcn.0041e4b0
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov ecx, dword [ebx]
lea edi, [eax + 1]
imul eax, eax, 0x2c
mov dword [esp + 0x34], edx
mov dword [esi + eax], ecx
mov ecx, dword [ebx + 4]
mov dword [esi + eax + 4], ecx
mov ecx, dword [ebx + 8]
mov dword [esi + eax + 8], ecx
mov ecx, dword [ebx + 0xc]
mov dword [esi + eax + 0xc], ecx
mov ecx, dword [ebx + 0x10]
mov dword [esi + eax + 0x10], ecx
mov ecx, dword [ebx + 0x14]
mov dword [esi + eax + 0x14], ecx
mov ecx, dword [ebx + 0x18]
mov dword [esi + eax + 0x18], ecx
mov ecx, dword [ebx + 0x1c]
mov dword [esi + eax + 0x1c], ecx
mov ecx, dword [ebx + 0x20]
mov dword [esi + eax + 0x20], ecx
mov ecx, dword [ebx + 0x24]
mov dword [esi + eax + 0x24], ecx
mov ecx, dword [ebx + 0x28]
mov dword [esi + eax + 0x28], ecx
lea eax, [esi + eax + 0x2c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x80000
mov dword [esp + 8], 1
mov dword [esp + 4], 0x48f953
mov dword [esp], 0x4fd
call fcn.0041e4b0
mov edx, dword [esp + 0x34]
and edx, 0x20
cmp edx, 1
adc edi, 0xffffffff
add ebp, 1
add edi, 1
add ebx, 0x2c
cmp ebp, dword [esp + 0x2c]
jne 0x40f800
mov eax, dword [esp + 0x20]
test eax, eax
jle 0x40fa26
mov eax, dword [esp + 0x40]
test eax, eax
je 0x40ffd4
imul eax, edi, 0x2c
add edi, 1
mov dword [esp + 0xc], 0x80000
mov dword [esp + 8], 1
mov dword [esp + 4], 0x48f961
add eax, esi
mov dword [esp + 0x10], eax
mov dword [esp], 0x47e
call fcn.0041e4b0
add dword [esp + 0x44], 1
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x40ffb4
lea eax, [edi + 1]
mov edx, dword [ecx]
imul edi, edi, 0x2c
add edi, esi
mov dword [edi], edx
mov edx, dword [ecx + 4]
mov dword [edi + 4], edx
mov edx, dword [ecx + 8]
mov dword [edi + 8], edx
mov edx, dword [ecx + 0xc]
mov dword [edi + 0xc], edx
mov edx, dword [ecx + 0x10]
mov dword [edi + 0x10], edx
mov edx, dword [ecx + 0x14]
mov dword [edi + 0x14], edx
mov edx, dword [ecx + 0x18]
mov dword [edi + 0x18], edx
mov edx, dword [ecx + 0x1c]
mov dword [edi + 0x1c], edx
mov edx, dword [ecx + 0x20]
mov dword [edi + 0x20], edx
mov edx, dword [ecx + 0x24]
mov dword [edi + 0x24], edx
mov edx, dword [ecx + 0x28]
mov dword [edi + 0x28], edx
mov edi, dword [esp + 0x1c]
test edi, edi
je 0x4100e6
lea edx, [eax + 1]
mov ecx, dword [edi]
imul eax, eax, 0x2c
add eax, esi
mov dword [eax], ecx
mov ecx, dword [edi + 4]
mov dword [eax + 4], ecx
mov ecx, dword [edi + 8]
mov dword [eax + 8], ecx
mov ecx, dword [edi + 0xc]
mov dword [eax + 0xc], ecx
mov ecx, dword [edi + 0x10]
mov dword [eax + 0x10], ecx
mov ecx, dword [edi + 0x14]
mov dword [eax + 0x14], ecx
mov ecx, dword [edi + 0x18]
mov dword [eax + 0x18], ecx
mov ecx, dword [edi + 0x1c]
mov dword [eax + 0x1c], ecx
mov ecx, dword [edi + 0x20]
mov dword [eax + 0x20], ecx
mov ecx, dword [edi + 0x24]
mov dword [eax + 0x24], ecx
mov ecx, dword [edi + 0x28]
mov dword [eax + 0x28], ecx
mov edi, dword [esp + 0x24]
test edi, edi
je 0x4100ed
lea eax, [edx + 1]
mov ecx, dword [edi]
imul edx, edx, 0x2c
add edx, esi
mov dword [edx], ecx
mov ecx, dword [edi + 4]
mov dword [edx + 4], ecx
mov ecx, dword [edi + 8]
mov dword [edx + 8], ecx
mov ecx, dword [edi + 0xc]
mov dword [edx + 0xc], ecx
mov ecx, dword [edi + 0x10]
mov dword [edx + 0x10], ecx
mov ecx, dword [edi + 0x14]
mov dword [edx + 0x14], ecx
mov ecx, dword [edi + 0x18]
mov dword [edx + 0x18], ecx
mov ecx, dword [edi + 0x1c]
mov dword [edx + 0x1c], ecx
mov ecx, dword [edi + 0x20]
mov dword [edx + 0x20], ecx
mov ecx, dword [edi + 0x24]
mov dword [edx + 0x24], ecx
mov ecx, dword [edi + 0x28]
mov dword [edx + 0x28], ecx
mov edi, dword [esp + 0x74]
mov dword [edi], eax
mov eax, dword [esp + 0x70]
mov dword [eax], esi
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x78]
mov dword [eax], esi
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp eax, 0x88
je 0x40fba3
jbe 0x40fb90
cmp eax, 0x1b8
je 0x40fb62
cmp eax, 0x1c0
je 0x40fba3
cmp eax, 0x10e
jne 0x40f760
mov esi, dword [esp + 0x20]
mov eax, 1
test esi, esi
cmovne eax, esi
add ebx, 0x2c
add edx, 4
cmp edx, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
jne 0x40f710
jmp 0x40f76c
cmp eax, 0x75
je 0x40fba3
cmp eax, 0x79
je 0x40fba3
cmp eax, 0x6f
jne 0x40f760
add ebx, 0x2c
add edx, 4
cmp edx, dword [esp + 0x1c]
mov dword [esp + 0x20], 0xffffffff
jne 0x40f710
jmp 0x40f76c
cmp eax, 0x49b
je 0x40fba3
cmp eax, 0x4a0
je 0x40fba3
cmp eax, 0x47e
jne 0x40f760
mov edi, 0x48f8c8
mov ecx, 2
mov esi, ebp
repe cmpsb byte [esi], byte es:[edi]
jne 0x40ff00
or dword [edx], 4
add ebx, 0x2c
add edx, 4
cmp edx, dword [esp + 0x1c]
mov dword [esp + 0x3c], 0
jne 0x40f710
jmp 0x40f76c
test dl, 0x10
je 0x40f870
mov eax, dword [esp + 0x20]
test eax, eax
nop
jle 0x40f870
sub edi, 1
mov dword [esp + 0x24], ebx
jmp 0x40f870
test dl, 8
je 0x40f864
mov eax, dword [esp + 0x20]
test eax, eax
jle 0x40f864
sub edi, 1
mov dword [esp + 0x1c], ebx
jmp 0x40f864
test dl, 4
je 0x40f858
mov ecx, dword [esp + 0x20]
test ecx, ecx
jle 0x40f858
sub edi, 1
mov dword [esp + 0x28], ebx
jmp 0x40f858
lea eax, [edi + 1]
imul edi, edi, 0x2c
mov dword [esp + 0xc], 0x80000
mov dword [esp + 8], 1
mov dword [esp + 4], str.c_cpp_output
add edi, esi
mov dword [esp + 0x10], edi
mov dword [esp], 0x4fd
mov dword [esp + 0x38], edx
mov dword [esp + 0x34], eax
call fcn.0041e4b0
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
jmp 0x40f93c
lea eax, [edi + 1]
imul edi, edi, 0x2c
mov dword [esp + 0xc], 0x80000
mov dword [esp + 8], 1
mov dword [esp + 4], str.c_header
add edi, esi
mov dword [esp + 0x10], edi
mov dword [esp], 0x4fd
mov dword [esp + 0x38], edx
mov dword [esp + 0x34], eax
call fcn.0041e4b0
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
jmp 0x40f93c
add ebx, 0x2c
add edx, 4
cmp edx, dword [esp + 0x1c]
mov dword [esp + 0x40], 1
jne 0x40f710
jmp 0x40f76c
cmp byte [ebp], 0
je 0x40f760
cmp byte [ebp + 1], 0
je 0x40f760
mov esi, dword [esp + 0x34]
test esi, esi
jne 0x40ffc7
mov dword [esp], ebp
mov dword [esp + 0x48], edx
call sub.msvcrt.dll_strlen
mov edx, dword [esp + 0x48]
cmp eax, 2
mov dword [esp + 0x38], eax
jle 0x41008f
movzx ecx, byte [ebp + eax - 1]
cmp cl, 0x63
je 0x4100f4
sub ecx, 0x68
cmp cl, 1
jbe 0x4100f4
mov ecx, dword [esp + 0x20]
test ecx, ecx
jne 0x40f760
mov eax, dword [esp + 0x38]
mov ecx, 3
mov edi, 0x48f906
lea esi, [ebp + eax - 2]
mov dword [esp + 0x48], esi
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov eax, esi
cmp al, cl
je 0x40f760
mov esi, dword [esp + 0x48]
mov edi, 0x48f909
mov ecx, 3
repe cmpsb byte [esi], byte es:[edi]
je 0x40f760
mov eax, dword [esp + 0x38]
cmp eax, 4
jle 0x410110
lea esi, [ebp + eax - 4]
mov edi, str..hpp
mov dword [esp + 0x48], esi
mov ecx, 5
repe cmpsb byte [esi], byte es:[edi]
je 0x40f760
mov eax, dword [esp + 0x38]
mov edi, 0x48f911
mov ecx, 4
sub eax, 3
mov dword [esp + 0x4c], eax
lea esi, [ebp + eax]
repe cmpsb byte [esi], byte es:[edi]
je 0x40f760
mov esi, dword [esp + 0x48]
mov edi, str..hxx
mov ecx, 5
repe cmpsb byte [esi], byte es:[edi]
je 0x40f760
mov esi, dword [esp + 0x48]
mov edi, str..h
mov ecx, 5
repe cmpsb byte [esi], byte es:[edi]
je 0x40f760
mov esi, dword [esp + 0x48]
mov edi, str..HPP
mov ecx, 5
repe cmpsb byte [esi], byte es:[edi]
je 0x40f760
mov esi, dword [esp + 0x48]
mov edi, str..tcc
mov ecx, 5
repe cmpsb byte [esi], byte es:[edi]
je 0x40f760
add ebp, dword [esp + 0x4c]
mov dword [esp + 0x48], ebp
mov esi, dword [esp + 0x48]
mov edi, 0x48f929
mov ecx, 4
repe cmpsb byte [esi], byte es:[edi]
je 0x40f760
jmp 0x40feed
mov edi, dword [esp + 0x20]
mov dword [esp + 0x34], 1
test edi, edi
jne 0x40f760
mov ecx, 4
mov edi, 0x48f8cc
mov esi, ebp
repe cmpsb byte [esi], byte es:[edi]
mov dword [esp + 0x20], 1
seta cl
setb al
cmp cl, al
je 0x40f760
mov edi, str.c_cpp_output
mov esi, ebp
mov ecx, 0xf
repe cmpsb byte [esi], byte es:[edi]
je 0x40f760
mov edi, str.objective_c
mov ecx, 0xe
mov esi, ebp
repe cmpsb byte [esi], byte es:[edi]
jne 0x410072
mov dword [esp + 0x34], 1
mov dword [esp + 0x20], 1
jmp 0x40f760
cmp byte [ebp], 0
je 0x40ff22
mov edi, 0x48f8ca
mov ecx, 2
mov esi, ebp
repe cmpsb byte [esi], byte es:[edi]
jne 0x40fb62
or dword [edx], 0x10
jmp 0x40f760
or dword [edx], 8
add ebx, 0x2c
add edx, 4
cmp edx, dword [esp + 0x1c]
jne 0x40f710
jmp 0x40f76c
mov eax, dword [esp + 0x2c]
mov edi, 1
add eax, 2
imul eax, eax, 0x2c
mov dword [esp], eax
call fcn.004534b0
mov dword [esp + 0x3c], 1
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x1c], 0
mov esi, eax
mov eax, dword [ebp]
mov dword [esi], eax
mov eax, dword [ebp + 4]
mov dword [esi + 4], eax
mov eax, dword [ebp + 8]
mov dword [esi + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [ebp + 0x10]
mov dword [esi + 0x10], eax
mov eax, dword [ebp + 0x14]
mov dword [esi + 0x14], eax
mov eax, dword [ebp + 0x18]
mov dword [esi + 0x18], eax
mov eax, dword [ebp + 0x1c]
mov dword [esi + 0x1c], eax
mov eax, dword [ebp + 0x20]
mov dword [esi + 0x20], eax
mov eax, dword [ebp + 0x24]
mov dword [esi + 0x24], eax
mov eax, dword [ebp + 0x28]
mov dword [esi + 0x28], eax
mov ebp, dword [esp + 0x3c]
test ebp, ebp
jne 0x4100a0
mov eax, edi
jmp 0x40fa7a
mov dword [esp + 0x34], 0
jmp 0x40f760
cmp dword [esp + 0x20], 1
jle 0x40f9f1
imul ebx, edi, 0x2c
add edi, 3
mov dword [esp + 0xc], 0x80000
mov dword [esp + 8], 1
mov dword [esp + 4], str._Bstatic
lea eax, [esi + ebx]
mov dword [esp + 0x10], eax
mov dword [esp], 0x10e
call fcn.0041e4b0
lea eax, [esi + ebx + 0x2c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x80000
mov dword [esp + 8], 1
mov dword [esp + 4], 0x48f961
mov dword [esp], 0x47e
call fcn.0041e4b0
lea eax, [esi + ebx + 0x58]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x80000
mov dword [esp + 8], 1
mov dword [esp + 4], str._Bdynamic
mov dword [esp], 0x10e
add dword [esp + 0x44], 1
call fcn.0041e4b0
jmp 0x40fa26
mov edi, str.objective_c_cpp_output
mov ecx, 0x19
mov esi, ebp
repe cmpsb byte [esi], byte es:[edi]
sete al
movzx eax, al
mov dword [esp + 0x20], eax
jmp 0x40f760
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40feed
jmp 0x40f760
mov ebx, dword [esp + 0x20]
test ebx, ebx
jle 0x40ffc0
imul eax, edi, 0x2c
mov dword [esp + 0xc], 0x80000
mov dword [esp + 8], 1
mov dword [esp + 4], 0x48f8c8
add eax, esi
mov dword [esp + 0x10], eax
mov dword [esp], 0x47e
call fcn.0041e4b0
lea eax, [edi + 1]
add dword [esp + 0x44], 1
jmp 0x40fa7a
mov edx, eax
jmp 0x40face
mov eax, edx
jmp 0x40fb22
mov eax, dword [esp + 0x38]
cmp byte [ebp + eax - 2], 0x2e
jne 0x40fd79
or dword [edx], 2
add dword [esp + 0x24], 2
jmp 0x40fd79
cmp dword [esp + 0x38], 3
jle 0x40feed
mov eax, dword [esp + 0x38]
mov edi, 0x48f911
mov ecx, 4
sub eax, 3
lea esi, [ebp + eax]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], esi
repe cmpsb byte [esi], byte es:[edi]
je 0x40f760
mov eax, dword [esp + 0x38]
cmp eax, 4
je 0x40fe6d
lea eax, [ebp + eax - 4]
mov dword [esp + 0x48], eax
jmp 0x40fe0d