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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x60
mov ebp, ecx
mov ecx, dword [esp + 0x78]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 0x10]
cmp eax, ecx
je 0x40d548
xor ebx, ebx
mov esi, 1
xor edx, edx
nop word cs:[eax + eax]
cmp byte [eax + 8], 0
movzx edx, dl
cmovne edx, esi
movzx ebx, bl
cmove ebx, esi
add eax, 0xc
cmp eax, ecx
jne 0x40d4a0
and bl, 1
sete al
je 0x40d54c
and dl, 1
je 0x40d54c
mov ecx, dword [esp + 0x78]
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x3c], 0x41e1e1
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], ecx
mov word [esp + 0x4c], 0x503
lea eax, [esp + 0x3c]
mov dword [esp + 4], eax
mov dword [esp + 0xc], str._cannot_contain_both_strings_and_integers
mov word [esp + 0x14], 0x302
call fcn.0041bdf0
mov edi, eax
push 0x1c
call sub.libc.dll_operator_new_unsigned_int_
add esp, 4
mov ebx, eax
mov dword [esp + 0x38], edi
mov dword [esp + 0x34], 0x16
sub esp, 0xc
movsd xmm0, qword [esp + 0x40]
movsd qword [esp + 4], xmm0
lea eax, [esp + 0x10]
mov dword [esp], eax
mov ecx, ebx
call fcn.0041bbd4
mov dword [ebp], ebx
jmp 0x40d8aa
mov al, 1
xor ebx, ebx
mov byte [esp + 3], al
mov dword [esp + 0x1c], ebp
mov eax, dword [esp + 0x74]
mov edi, dword [eax + 0x70]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x28]
mov ecx, dword [edi + 0x10]
sub ecx, dword [edi + 8]
xor edi, edi
add ecx, eax
and ecx, 3
mov edx, 4
sub edx, ecx
sbb edi, edi
test ecx, ecx
je 0x40d5c6
xor ebp, ebp
xor esi, esi
mov dword [esp + 0x18], edx
nop word cs:[eax + eax]
mov byte [esp + 4], 0
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x70]
mov eax, dword [ecx]
call dword [eax + 0x28]
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x70]
push 1
lea eax, [esp + 8]
push eax
call fcn.0041bbe0
mov edx, dword [esp + 0x18]
add ebp, 1
adc esi, 0
cmp ebp, edx
mov eax, esi
sbb eax, edi
jb 0x40d590
mov word [esp + 4], 0
mov ebp, dword [esp + 0x74]
mov edi, dword [ebp + 0x70]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x28]
mov ecx, dword [edi + 0x10]
sub ecx, dword [edi + 8]
add ecx, eax
mov dword [esp + 0x18], ecx
adc edx, 0
mov dword [esp + 0x30], edx
mov ecx, dword [ebp + 0x70]
lea esi, [esp + 4]
push 2
push esi
call fcn.0041bbe0
mov word [esp + 4], 0
mov edi, dword [ebp + 0x70]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x28]
mov ecx, dword [edi + 0x10]
sub ecx, dword [edi + 8]
add ecx, eax
mov dword [esp + 0x2c], ecx
adc edx, 0
mov dword [esp + 0x28], edx
mov ecx, dword [ebp + 0x70]
push 2
push esi
call fcn.0041bbe0
movzx eax, bl
mov word [esp + 4], ax
mov ecx, dword [ebp + 0x70]
mov eax, dword [ecx]
call dword [eax + 0x28]
mov ecx, dword [ebp + 0x70]
push 2
push esi
call fcn.0041bbe0
mov eax, dword [esp + 0x78]
movsd xmm0, qword [eax + 4]
movsd qword [esp + 0x58], xmm0
sub esp, 0x10
movsd qword [esp + 4], xmm0
mov dword [esp], ebp
mov dword [esp + 0xc], 1
mov ebp, dword [esp + 0x2c]
mov ecx, ebp
call fcn.00407ff0
cmp dword [ebp], 0
jne 0x40d8aa
mov eax, dword [esp + 0x74]
mov ebx, dword [eax + 0x70]
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x28]
mov ecx, dword [ebx + 0x10]
sub ecx, dword [ebx + 8]
add ecx, eax
and ecx, 3
xor esi, esi
mov ebx, 4
sub ebx, ecx
mov edi, 0
sbb edi, edi
test ecx, ecx
je 0x40d6e2
xor ebp, ebp
nop
mov byte [esp + 4], 0
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x70]
mov eax, dword [ecx]
call dword [eax + 0x28]
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x70]
push 1
lea eax, [esp + 8]
push eax
call fcn.0041bbe0
add ebp, 1
adc esi, 0
cmp ebp, ebx
mov eax, esi
sbb eax, edi
jb 0x40d6b0
mov esi, dword [esp + 0x74]
mov ebx, dword [esi + 0x70]
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x28]
mov ecx, dword [ebx + 0x10]
sub ecx, dword [ebx + 8]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x78]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 0x10]
sub ecx, eax
mov ebp, dword [esp + 0x1c]
mov ebx, esi
je 0x40d842
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
xor edi, edi
xor esi, esi
jmp 0x40d784
movsd xmm0, qword [eax + edi]
movsd qword [esp + 0x50], xmm0
sub esp, 0x10
movsd qword [esp + 4], xmm0
movzx eax, dl
mov dword [esp + 0xc], eax
mov dword [esp], ebx
mov ecx, ebp
call fcn.00407ff0
cmp dword [ebp], 0
jne 0x40d8aa
inc esi
mov ecx, dword [esp + 0x78]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 0x10]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
add edi, 0xc
cmp esi, ecx
mov ebx, dword [esp + 0x74]
jae 0x40d842
cmp byte [eax + edi + 8], 0
je 0x40d7d0
mov ebx, dword [eax + edi]
mov eax, dword [eax + edi + 4]
mov dword [esp + 4], str.VERSIONINFO_integer_value
mov word [esp + 0x14], 0x103
test al, 0xff
je 0x40d800
mov dword [ebp], 0
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x74]
mov ecx, dword [ebx + 0x70]
mov eax, dword [ecx]
call dword [eax + 0x28]
mov ecx, dword [ebx + 0x70]
push 4
jmp 0x40d833
dec ecx
mov dl, 1
cmp esi, ecx
je 0x40d730
lea ecx, [esi + 1]
mov edx, dword [esp + 0x78]
mov edx, dword [edx + 0x18]
mov ebx, ecx
shr ebx, 5
mov edx, dword [edx + ebx*4]
mov ebx, dword [esp + 0x74]
bt edx, ecx
setb dl
jmp 0x40d730
mov ecx, ebp
mov edx, ebx
lea eax, [esp + 4]
push eax
push 0x10
call fcn.0040bde0
add esp, 8
cmp dword [ebp], 0
jne 0x40d8aa
mov word [esp + 4], bx
mov ebx, dword [esp + 0x74]
mov ecx, dword [ebx + 0x70]
mov eax, dword [ecx]
call dword [eax + 0x28]
mov ecx, dword [ebx + 0x70]
push 2
lea eax, [esp + 8]
push eax
call fcn.0041bbe0
jmp 0x40d75f
mov edi, ebx
mov ebx, dword [ebx + 0x70]
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x28]
mov edx, dword [ebx + 0x10]
sub edx, dword [ebx + 8]
add edx, eax
mov eax, dword [esp + 0x20]
add eax, dword [esp + 0x24]
mov esi, edx
sub esi, eax
movzx ecx, byte [esp + 3]
xor cl, 1
shr esi, cl
mov ebx, dword [esp + 0x18]
sub edx, ebx
mov word [esp + 4], dx
mov ecx, dword [edi + 0x70]
mov eax, dword [ecx]
push dword [esp + 0x30]
push ebx
push 2
lea ebx, [esp + 0x10]
push ebx
call dword [eax + 0x34]
mov word [esp + 4], si
mov ecx, dword [edi + 0x70]
mov eax, dword [ecx]
push dword [esp + 0x28]
push dword [esp + 0x30]
push 2
push ebx
call dword [eax + 0x34]
mov dword [ebp], 0
mov eax, ebp
add esp, 0x60
pop esi
pop edi
pop ebx
pop ebp
ret 8