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

Disassembly:
sub esp, 0x24
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0x1c]
push ebp
mov ebp, dword [esp + 0x30]
push esi
mov esi, dword [eax + 0x18]
cmp esi, ecx
push edi
mov dword [esp + 0xc], esi
je 0x40ab57
push ebx
mov ecx, dword [esi]
xor ebx, ebx
cmp ecx, ebx
je 0x40a850
mov eax, dword [ecx + 8]
cmp eax, ebx
jne 0x40a7ef
mov edx, dword [ecx + 0x10]
cmp byte [edx + 0xfa], bl
je 0x40a841
cmp eax, ebx
je 0x40a7fe
mov dl, byte [ecx + 0xc]
and dl, byte [eax]
neg dl
sbb edx, edx
neg edx
mov eax, edx
jmp 0x40a808
mov eax, dword [ecx + 0x10]
movsx eax, byte [eax + 0xf9]
cmp eax, ebx
je 0x40a83c
mov ecx, dword [esi + 8]
mov al, byte [esi + 0xc]
inc ecx
mov edx, ecx
shr ecx, 2
test al, al
mov edi, ebp
je 0x40a825
mov eax, 0xffffffff
jmp 0x40a827
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esi + 8]
lea ebp, [eax + ebp + 1]
jmp 0x40ab40
mov byte [ebp], 1
inc ebp
mov eax, dword [esi + 8]
mov edx, dword [ecx]
push eax
push ebp
call dword [edx + 0x78]
jmp 0x40ab1f
mov eax, dword [esi + 0x10]
sub eax, ebx
mov edi, dword [esi + 4]
mov dword [esp + 0x14], edi
je 0x40a989
dec eax
je 0x40a937
dec eax
jne 0x40ab1f
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 0x24]
mov cl, byte [edi + 0x22]
test cl, cl
mov dword [esp + 0x1c], eax
mov ebx, edx
je 0x40a889
mov byte [ebp], 1
inc ebp
mov cl, byte [edi + 0x23]
test cl, cl
je 0x40a8ca
mov al, byte [edi + 0x22]
test al, al
mov ecx, dword [esi + 8]
je 0x40a8b3
inc ecx
mov edx, ecx
shr ecx, 2
xor eax, eax
lea edi, [ebp - 1]
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
jmp 0x40ab1f
mov edx, ecx
shr ecx, 2
xor eax, eax
mov edi, ebp
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
jmp 0x40ab1f
mov edx, ebx
mov ecx, 8
mov byte [ebp + 7], al
call fcn.004b63b0
mov byte [ebp + 6], al
mov eax, dword [esp + 0x1c]
mov edx, ebx
mov ecx, 0x10
call fcn.004b63b0
mov byte [ebp + 5], al
mov eax, dword [esp + 0x1c]
mov edx, ebx
mov ecx, 0x18
call fcn.004b63b0
mov byte [ebp + 4], al
mov ecx, ebx
sar ecx, 8
mov edx, ebx
mov eax, ebx
sar edx, 0x1f
sar eax, 0x1f
mov byte [ebp + 2], cl
mov edx, ebx
mov eax, ebx
mov ecx, ebx
mov byte [ebp + 3], bl
sar eax, 0x10
sar edx, 0x18
sar ecx, 0x1f
sar ebx, 0x1f
xor dl, 0x80
mov byte [ebp + 1], al
mov byte [ebp], dl
jmp 0x40ab1f
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x20]
fstp qword [esp + 0x14]
mov al, byte [edi + 0x23]
test al, al
je 0x40a965
mov ecx, dword [esi + 8]
inc ecx
mov edx, ecx
shr ecx, 2
xor eax, eax
mov edi, ebp
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
inc ebp
jmp 0x40ab1f
mov al, byte [edi + 0x22]
test al, al
je 0x40a971
mov byte [ebp], 1
inc ebp
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
push ebp
push eax
push ecx
call fcn.0040b3c0
add esp, 0xc
jmp 0x40ab1f
mov al, byte [edi + 0x22]
test al, al
je 0x40a995
mov byte [ebp], 1
inc ebp
mov eax, dword [esi + 8]
mov edx, dword [edi]
add eax, 4
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x24]
push eax
mov ecx, edi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x34], ebx
call dword [edx + 0x28]
cmp eax, ebx
mov ecx, dword [esi + 8]
jne 0x40aa06
mov al, byte [edi + 0x22]
test al, al
je 0x40a9cb
inc ecx
lea edi, [ebp - 1]
jmp 0x40a9cd
mov edi, ebp
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
cmp dword [esp + 0x30], ebx
je 0x40ab1f
mov eax, dword [esp + 0x24]
push eax
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], ebx
call fcn.00480080
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
jmp 0x40ab1c
mov edx, dword [eax + 4]
mov ebx, ecx
sub ebx, edx
mov dword [esp + 0x3c], ecx
jns 0x40aa17
xor ebx, ebx
mov edx, ecx
mov ecx, dword [0x4f7218]
cmp dword [ecx + 0x1c], 0
mov eax, dword [eax]
je 0x40aab4
mov cl, byte [edi + 0x24]
test cl, cl
je 0x40aa66
cmp eax, ebp
je 0x40aa4c
mov ecx, edx
mov esi, eax
mov eax, ecx
shr ecx, 2
mov edi, ebp
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x10]
mov ecx, ebx
lea edi, [edx + ebp]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
jmp 0x40aaf8
cmp eax, ebp
jne 0x40aa94
mov ecx, dword [esp + 0x3c]
cmp edx, ecx
jbe 0x40aa74
mov edx, ecx
mov esi, eax
mov eax, dword [esp + 0x38]
mov edi, dword [eax + 0x20]
mov ecx, edx
mov ebx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [eax + 0x20]
mov esi, dword [esp + 0x10]
mov ecx, dword [esi + 8]
push edx
mov edx, dword [0x4f7218]
push ecx
push eax
push ebp
call dword [edx + 0x28]
mov ecx, dword [esi + 8]
mov edx, eax
add esp, 0x10
cmp edx, ecx
jae 0x40aaf8
sub ecx, edx
jmp 0x40aa4e
cmp eax, ebp
je 0x40aad0
mov ecx, edx
mov esi, eax
mov eax, ecx
shr ecx, 2
mov edi, ebp
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x10]
mov ecx, ebx
shr ecx, 2
xor eax, eax
lea edi, [edx + ebp]
rep stosd dword es:[edi], eax
mov ecx, ebx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x14]
mov al, byte [ecx + 0x24]
test al, al
jne 0x40aaf8
push edx
push ebp
call fcn.0047faf0
add esp, 8
mov eax, dword [esp + 0x30]
test eax, eax
je 0x40ab1f
mov edx, dword [esp + 0x24]
xor edi, edi
push edx
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], edi
call fcn.00480080
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], edi
add esp, 4
mov al, byte [esi + 0xc]
test al, al
mov eax, dword [esi + 8]
je 0x40ab3e
test eax, eax
je 0x40ab40
lea ecx, [ecx]
mov cl, byte [ebp]
not cl
mov byte [ebp], cl
inc ebp
dec eax
jne 0x40ab30
jmp 0x40ab40
add ebp, eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax + 0x1c]
add esi, 0x14
cmp esi, ecx
mov dword [esp + 0x10], esi
jne 0x40a7d1
pop ebx
mov ecx, dword [eax + 8]
mov esi, dword [esp + 0x3c]
mov edx, ecx
shr ecx, 2
mov edi, ebp
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
add esp, 0x24
ret