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

Disassembly:
sub esp, 0x6c
mov eax, dword [0x514bc0]
xor eax, esp
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x88]
push ebx
mov ebx, dword [esp + 0x80]
push ebp
push esi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x84]
mov esi, dword [eax]
mov dword [esp + 0x30], esi
mov esi, dword [ecx]
mov dword [eax], 0
push edi
mov edi, dword [esp + 0x80]
mov dword [ecx], 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x30], esi
mov dword [edx], 0
jmp case.0x415696.6
mov edx, dword [esp + 0x14]
mov ecx, dword [edx]
mov ebp, dword [esp + 0x30]
mov eax, dword [edi]
sub ebp, ecx
cmp eax, 6
jne 0x415683
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x20]
sub eax, dword [ecx]
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], eax
test ebp, ebp
jne 0x4154f5
test eax, eax
je 0x415b0b
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x94]
mov ebp, dword [esp + 0x24]
push edx
push eax
push 0
lea ecx, [esp + 0x34]
push ecx
push ebx
lea edx, [esp + 0x40]
push edx
push ebp
lea eax, [edi + 0x58]
push eax
call fcn.00413c50
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x190]
sub eax, 1
je 0x41556d
sub eax, 3
je 0x41554a
sub eax, 6
jne 0x415581
push esi
push ebp
lea ecx, [edi + 0x1a0]
push ecx
call fcn.00466ce0
jmp 0x415581
mov edx, dword [edi + 0x19c]
mov eax, dword [edi + 0x198]
push esi
push ebp
push edx
push eax
call fcn.004138e0
mov dword [edi + 0x198], eax
mov dword [edi + 0x19c], edx
jmp 0x415581
mov ecx, dword [edi + 0x194]
push esi
push ebp
push ecx
call fcn.00439380
mov dword [edi + 0x194], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x14]
add dword [ecx], eax
mov ecx, dword [esp + 0x20]
add ebx, eax
add dword [edi + 0x18], eax
mov edx, 0
adc dword [edi + 0x1c], edx
add dword [ecx], esi
mov ecx, dword [esp + 0x1c]
add ebp, esi
add dword [edi + 0x20], esi
mov dword [esp + 0x24], ebp
adc dword [edi + 0x24], edx
cmp ecx, edx
jne 0x415b2c
mov ecx, dword [esp + 0x18]
cmp dword [ecx], 1
jne 0x41565c
movzx eax, word [edi + 0x10]
and eax, 0xf
je 0x4155e4
lea ecx, [eax - 1]
mov eax, 0x55555556
imul ecx
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, 4
shl edx, cl
mov eax, dword [edi + 0x14]
xor ecx, ecx
xor esi, esi
add eax, edx
adc ecx, esi
add eax, dword [edi + 0x18]
adc ecx, dword [edi + 0x1c]
mov dl, al
shrd eax, ecx, 7
or dl, 0x80
mov byte [esp + esi + 0x38], dl
shr ecx, 7
mov edx, eax
inc esi
or edx, ecx
jne 0x4155f5
mov eax, dword [edi + 0x24]
mov ecx, dword [edi + 0x20]
and byte [esp + esi + 0x37], 0x7f
push eax
push ecx
lea edx, [esp + esi + 0x40]
push edx
call fcn.00413ea0
mov ebp, eax
add ebp, esi
push ebp
lea eax, [esp + 0x3c]
push eax
lea ecx, [edi + 0x210]
push ecx
call fcn.00466ce0
add dword [edi + 0x30], ebp
mov eax, 0
mov dword [edi], 7
adc dword [edi + 0x34], eax
add dword [edi + 0x28], 1
mov dword [edi + 4], eax
mov dword [edi + 8], eax
adc dword [edi + 0x2c], eax
jmp case.0x415696.6
cmp eax, edx
jne case.0x415696.6
test esi, esi
jne case.0x415696.6
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.004e34f4
add esp, 0x6c
ret 0x1c
xor esi, esi
cmp ebp, esi
je 0x415b43
cmp eax, 7
ja case.0x415696.6
jmp dword [eax*4 + 0x415b80]
mov ebp, dword [edi + 4]
cmp ebp, 0xc
jae 0x4156cc
cmp ebp, 6
jae 0x4156b8
mov al, byte [ebx]
cmp al, byte [ebp + 0x512b3c]
jne 0x415b64
mov cl, byte [ebx]
mov byte [edi + ebp + 0x2a0], cl
inc dword [edi + 4]
inc ebx
inc dword [edx]
jmp case.0x415696.6
lea edx, [edi + 0x2a0]
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00414900
cmp eax, esi
jne 0x415b69
lea ecx, [edi + 0x210]
push ecx
mov dword [edi], 5
call fcn.00466830
mov dword [edi + 0x30], esi
mov dword [edi + 0x34], esi
mov dword [edi + 0x28], esi
mov dword [edi + 0x2c], esi
mov dword [edi + 4], esi
jmp case.0x415696.6
mov ecx, dword [edi + 4]
cmp ecx, esi
jne 0x415790
mov dl, byte [ebx]
mov eax, dword [esp + 0x14]
lea esi, [edi + 0x2a0]
mov byte [esi], dl
inc dword [edi + 4]
inc dword [eax]
inc ebx
cmp byte [esi], 0
jne 0x41577e
mov eax, dword [edi + 0x2c]
mov ecx, dword [edi + 0x28]
push eax
push ecx
lea edx, [edi + 0x2a1]
push edx
call fcn.00413ea0
inc eax
xor ecx, ecx
add dword [edi + 0x30], eax
mov dword [edi + 0xc], eax
mov dword [edi + 0x38], eax
adc dword [edi + 0x34], ecx
lea eax, [edi + 0x280]
push eax
lea ebp, [edi + 0x210]
push ebp
mov dword [edi + 0x3c], ecx
call fcn.00466d90
push ebp
call fcn.00466830
mov ecx, dword [edi + 0xc]
push ecx
push esi
push 0xffffffffffffffff
call fcn.00439380
mov dword [edi + 0x50], eax
mov dword [edi], 1
movzx edx, byte [esi]
lea eax, [edx*4 + 4]
mov dword [edi + 0x14], eax
jmp case.0x415696.6
mov eax, dword [edi + 0x14]
cmp ecx, eax
je 0x4157c3
sub eax, ecx
mov esi, eax
cmp esi, ebp
jbe 0x4157a1
mov esi, ebp
push esi
push ebx
lea ecx, [ecx + edi + 0x2a0]
push ecx
call fcn.004e4090
add dword [edi + 4], esi
mov eax, dword [esp + 0x20]
add dword [eax], esi
add esp, 0xc
add ebx, esi
jmp case.0x415696.6
lea edx, [edi + 0x2a0]
push edx
lea ebp, [edi + 0xf8]
push ebp
call fcn.004149d0
cmp eax, esi
jne 0x415b69
movzx eax, word [edi + 0x10]
and eax, 0xf
push eax
lea ecx, [edi + 0x190]
push ecx
mov dword [edi], 6
mov dword [edi + 0x18], esi
mov dword [edi + 0x1c], esi
mov dword [edi + 0x20], esi
mov dword [edi + 0x24], esi
call fcn.00413f30
push ebp
lea edx, [edi + 0x58]
push edx
call fcn.00414b60
cmp eax, esi
je case.0x415696.6
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.004e34f4
add esp, 0x6c
ret 0x1c
mov eax, dword [edi + 8]
add eax, dword [edi + 0x18]
xor esi, esi
and eax, 3
or eax, esi
je 0x415865
inc ecx
mov dword [edx], ecx
inc dword [edi + 8]
mov al, byte [ebx]
inc ebx
test al, al
je case.0x415696.6
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.004e34f4
add esp, 0x6c
ret 0x1c
movzx ecx, word [edi + 0x10]
push ecx
call fcn.00413f00
mov ecx, dword [edi + 4]
mov esi, eax
sub esi, ecx
mov dword [esp + 0x1c], eax
je 0x415891
cmp esi, ebp
jbe 0x415882
mov esi, ebp
push esi
push ebx
lea edx, [ecx + edi + 0x2a0]
push edx
jmp 0x4157ab
lea eax, [esp + 0x38]
push eax
lea ecx, [edi + 0x190]
push ecx
mov dword [edi], 5
mov dword [edi + 4], 0
call fcn.00414c80
test eax, eax
je case.0x415696.6
mov eax, dword [esp + 0x1c]
lea esi, [edi + 0x2a0]
lea ebp, [esp + 0x38]
cmp eax, 4
jb 0x4158e9
lea ebx, [ebx]
mov edx, dword [ebp]
cmp edx, dword [esi]
jne 0x41584b
sub eax, 4
add esi, 4
add ebp, 4
cmp eax, 4
jae 0x4158d0
test eax, eax
je case.0x415696.6
mov cl, byte [esi]
cmp cl, byte [ebp]
jne 0x41584b
cmp eax, 1
jbe case.0x415696.6
mov dl, byte [esi + 1]
cmp dl, byte [ebp + 1]
jne 0x41584b
cmp eax, 2
jbe case.0x415696.6
mov al, byte [esi + 2]
cmp al, byte [ebp + 2]
jmp 0x415845
mov eax, dword [edi + 4]
cmp eax, dword [edi + 0xc]
jae 0x415948
inc ecx
mov dword [edx], ecx
mov esi, dword [edi + 4]
mov dl, byte [esi + edi + 0x2a0]
mov cl, byte [ebx]
inc esi
inc ebx
mov dword [edi + 4], esi
cmp cl, dl
jmp 0x415845
mov esi, dword [edi + 0x3c]
mov eax, dword [edi + 0x34]
mov edx, dword [edi + 0x38]
mov ecx, dword [edi + 0x30]
cmp esi, eax
ja 0x4159a0
jb 0x41595e
cmp edx, ecx
jae 0x4159a0
sub ecx, edx
sbb eax, esi
xor edx, edx
cmp edx, eax
jb 0x415970
ja 0x41596e
cmp ebp, ecx
jbe 0x415970
mov ebp, ecx
mov eax, dword [edi + 0x50]
push ebp
push ebx
push eax
call fcn.00439380
push ebp
push ebx
lea ecx, [edi + 0x210]
push ecx
mov dword [edi + 0x50], eax
call fcn.00466ce0
mov eax, dword [esp + 0x14]
add dword [eax], ebp
add ebx, ebp
add dword [edi + 0x38], ebp
adc dword [edi + 0x3c], 0
jmp case.0x415696.6
and edx, 3
xor esi, esi
or edx, esi
je 0x4159e4
mov dl, byte [ebx]
mov ecx, dword [edi + 0x50]
mov ebp, 1
push ebp
lea eax, [esp + 0x17]
push eax
push ecx
mov byte [esp + 0x1f], dl
add ebx, ebp
call fcn.00439380
mov dword [edi + 0x50], eax
mov eax, dword [esp + 0x14]
add dword [eax], ebp
add dword [edi + 0x38], ebp
adc dword [edi + 0x3c], esi
add dword [edi + 0x30], ebp
adc dword [edi + 0x34], esi
cmp byte [esp + 0x13], 0
jmp 0x415845
add ecx, 4
adc eax, esi
lea edx, [esp + 0x38]
mov dword [edi + 0x34], eax
push edx
lea eax, [edi + 0x210]
push eax
mov dword [edi], 2
mov dword [edi + 0x30], ecx
mov dword [edi + 4], esi
call fcn.00466d90
lea eax, [edi + 0x280]
lea ecx, [esp + 0x38]
mov edx, 0x20
sub ecx, eax
lea ebx, [ebx]
mov esi, dword [eax + ecx]
cmp esi, dword [eax]
jne 0x41584b
sub edx, 4
add eax, 4
cmp edx, 4
jae 0x415a20
jmp case.0x415696.6
cmp dword [edi + 4], 4
jae 0x415a59
inc ecx
mov dword [edx], ecx
mov dl, byte [ebx]
mov ecx, dword [edi + 4]
mov byte [ecx + edi + 0x2a0], dl
inc dword [edi + 4]
inc ebx
jmp case.0x415696.6
mov eax, dword [edi + 0x50]
not eax
mov dword [edi], 3
mov dword [edi + 4], esi
cmp eax, dword [edi + 0x2a0]
jmp 0x415845
mov eax, dword [edi + 4]
mov esi, 0xc
sub esi, eax
cmp esi, ebp
jbe 0x415a82
mov esi, ebp
push esi
lea ecx, [eax + edi + 0x2a0]
push ebx
push ecx
call fcn.004e4090
add dword [edi + 4], esi
mov eax, dword [esp + 0x20]
add dword [eax], esi
add esp, 0xc
add ebx, esi
cmp dword [edi + 4], 0xc
jne case.0x415696.6
add dword [edi + 0x48], 1
mov edx, dword [edi + 0x34]
movzx ecx, word [edi + 0x10]
mov eax, 0
adc dword [edi + 0x4c], eax
mov dword [edi + 0x40], eax
mov dword [edi + 0x44], eax
mov eax, dword [edi + 0x30]
push edx
push eax
lea esi, [edi + 0x2a0]
push ecx
mov dword [edi], 4
call fcn.00414950
test al, al
jne case.0x415696.6
jmp 0x41584b
cmp byte [ebx], 0
je 0x415afb
test byte [edi + 0x40], 3
jne 0x415b64
mov dword [edi + 4], esi
mov dword [edi], esi
jmp case.0x415696.6
inc ecx
mov dword [edx], ecx
inc ebx
add dword [edi + 0x40], 1
adc dword [edi + 0x44], esi
jmp case.0x415696.6
mov edx, dword [esp + 0x18]
pop edi
pop esi
pop ebp
mov dword [edx], 2
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.004e34f4
add esp, 0x6c
ret 0x1c
pop edi
pop esi
pop ebp
mov eax, ecx
pop ebx
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.004e34f4
add esp, 0x6c
ret 0x1c
mov eax, dword [esp + 0x18]
pop edi
pop esi
pop ebp
mov dword [eax], 3
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.004e34f4
add esp, 0x6c
ret 0x1c
mov eax, 0x11
mov ecx, dword [esp + 0x78]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004e34f4
add esp, 0x6c
ret 0x1c