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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x54]
cmp eax, dword [ecx + 8]
jbe 0x415767
sub esp, 0xd4
mov eax, dword [esp + 0xd8]
mov dword [esp], eax
call fcn.004138e0
mov eax, dword [esp + 0xe4]
mov ecx, dword [eax + 0x14]
mov edx, dword [esp + 4]
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0xdc]
cmp edi, 8
je 0x414dc8
cmp edi, 0xc
je 0x414cbc
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xd0], esi
mov dword [esp + 0x88], ebp
mov dword [esp + 0x84], ebx
mov dword [esp + 0xcc], edx
mov eax, dword [esp + 0xd8]
lea ecx, [edi + eax - 1]
mov dword [esp], ecx
call fcn.00427e40
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x88]
cmp eax, ecx
je 0x414b24
mov edx, dword [esp + 0xd8]
mov ebx, edx
xor ebp, ebp
jmp 0x414b39
mov ebx, dword [esp + 0xd8]
mov edx, dword [esp + 0xcc]
mov ebp, dword [esp + 0xd0]
mov dword [esp + 0x80], eax
mov dword [esp + 0xbc], edx
mov esi, dword [esp + 0xe4]
movzx edi, byte [esi + 0xf]
xchg edi, eax
test al, 0x40
xchg edi, eax
jne 0x414c2b
mov ebp, dword [esp + 0xe0]
cmp dword [esi], ebp
jae 0x414bfd
mov edi, dword [esi + 4]
shr edi, 2
cmp edi, 0x19
ja 0x414bb6
mov dword [esp + 0x7c], edi
mov dword [esp + 0x94], eax
xor eax, eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0xac], eax
mov dword [esp + 0x8c], ecx
xor ecx, ecx
mov dword [esp + 0x60], ecx
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x8c]
jmp 0x4156aa
mov eax, dword [esp + 0xa8]
mov dword [esp], eax
lea ecx, [edi + 7]
shr ecx, 3
dec ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 4], ecx
call fcn.004133a0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xe4]
mov edx, dword [ecx]
shr edx, 2
mov ebx, dword [esp + 0x44]
shl ebx, 3
sub edx, ebx
mov ebx, dword [esp + 0xa8]
xor ebp, ebp
xor esi, esi
jmp 0x4155f5
mov edi, dword [esp + 0xa8]
xor edi, edi
mov dword [esp + 0x3c], edi
xor edi, edi
mov dword [esp + 0xc4], edi
xor edi, edi
mov dword [esp + 0x34], edi
xor edi, edi
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0xa8]
jmp 0x415124
mov dword [esp + 0xb4], ebp
mov eax, dword [esi + 0x14]
mov dword [esp], eax
mov dword [esp + 4], 4
call fcn.004133a0
mov eax, dword [esp + 0xe4]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0xbc]
mov dword [esp], ebx
mov ebx, dword [esp + 0x84]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x88]
mov dword [esp + 8], ebx
mov ebp, dword [esp + 0xb4]
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], edx
call fcn.00415780
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x88]
cmp eax, ecx
jmp 0x414e87
movzx ecx, byte [ecx]
cmp dword [eax], 4
jne 0x414cc9
mov ecx, 7
and ecx, 7
mov eax, ecx
shl ecx, 4
or ecx, eax
mov eax, ecx
or ecx, 0x10
and ecx, 0x40
shr cl, 1
or ecx, eax
mov eax, ecx
or ecx, 0x10
cmp ebx, 1
ja 0x414d10
test ebx, ebx
jne 0x414cff
movzx ecx, byte [edx]
and ecx, 0xffffff88
or ecx, eax
or ecx, 0x10
mov byte [edx], cl
jmp 0x414dc1
movzx eax, byte [edx]
and eax, 0x11
shl ecx, 1
or ecx, eax
mov byte [edx], cl
jmp 0x414dc1
mov byte [esp + 0x29], cl
cmp ebx, 2
je 0x414d60
cmp ebx, 3
jne 0x414dc1
movzx eax, byte [edx]
and eax, 0x77
and ecx, 0x11
shl ecx, 3
or ecx, eax
mov byte [edx], cl
mov dword [esp], edx
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], esi
call fcn.00413d10
mov eax, dword [esp + 0x10]
movzx ecx, byte [eax]
and ecx, 0xffffffcc
movzx edx, byte [esp + 0x29]
shr dl, 1
and edx, 0x33
or edx, ecx
mov byte [eax], dl
jmp 0x414dc1
movzx eax, byte [edx]
and eax, 0x33
and ecx, 0x33
shl ecx, 2
or ecx, eax
mov byte [edx], cl
mov dword [esp], edx
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], esi
call fcn.00413d10
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebx
call fcn.00413d10
mov eax, dword [esp + 0x10]
movzx ecx, byte [eax]
and ecx, 0xffffffee
movzx edx, byte [esp + 0x29]
shr dl, 2
and edx, 0x11
or edx, ecx
mov byte [eax], dl
add esp, 0xd4
ret
cmp dword [eax], 4
jne 0x414e25
mov eax, dword [esp + 0xe0]
cmp eax, 4
jne 0x414e05
cmp ebx, 0x20
sbb eax, eax
movzx ebp, byte [edx]
mov ecx, ebx
mov esi, 0x33
shl esi, cl
and esi, eax
xchg esi, ebx
not ebx
xchg esi, ebx
and esi, ebp
mov ebp, 0x11
shl ebp, cl
and ebp, eax
or ebp, esi
xchg ebp, eax
mov byte [edx], al
xchg ebp, eax
jmp 0x414e1e
cmp ebx, 0x20
sbb eax, eax
movzx ebp, byte [edx]
mov ecx, ebx
mov ebx, 0x33
shl ebx, cl
and eax, ebx
or ebp, eax
xchg ebp, eax
mov byte [edx], al
xchg ebp, eax
add esp, 0xd4
ret
mov eax, dword [eax + 4]
shr eax, 2
cmp eax, 0x20
sbb ebp, ebp
cmp ebx, 0x20
sbb esi, esi
sbb edi, edi
mov dword [esp + 0x88], edi
movzx edi, byte [ecx]
and edi, 3
mov ecx, eax
mov eax, 0x10
shl eax, cl
and ebp, eax
lea eax, [ebp - 1]
and eax, 0xf0
or edi, eax
movzx eax, byte [edx]
mov ecx, ebx
mov ebp, 0x33
shl ebp, cl
and esi, ebp
xchg esi, ebx
not ebx
xchg esi, ebx
and esi, eax
shl edi, cl
mov eax, dword [esp + 0x88]
and edi, eax
or edi, esi
xchg edi, eax
mov byte [edx], al
xchg edi, eax
add esp, 0xd4
ret
je 0x414f90
mov eax, dword [esp + 0xd8]
mov dword [esp], eax
call fcn.004138e0
mov eax, dword [esp + 0xdc]
shr eax, 2
mov ecx, dword [esp + 0xd8]
mov edx, ecx
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 4]
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
cmp ebx, 2
jne 0x415061
mov dword [esp + 0x5c], eax
mov dword [esp + 0xc8], ecx
movzx eax, byte [ebp]
and eax, 0x33
movzx edx, byte [ecx]
or edx, eax
mov byte [ebp], dl
mov dword [esp], ebp
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], edi
call fcn.00413d10
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebx
call fcn.00413d10
mov eax, dword [esp + 0x10]
mov dword [esp + 0xd0], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x88], ecx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x84], edx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0xcc], ebx
mov ebp, dword [esp + 0xc8]
mov dword [esp], ebp
mov dword [esp + 4], 1
call fcn.004133a0
mov eax, dword [esp + 0x5c]
add eax, 0xfffffffe
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xd8]
mov ebx, dword [esp + 0x88]
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0xcc]
mov ebp, dword [esp + 0xd0]
jmp 0x415061
add esp, 0xd4
ret
mov dword [esp + 0x5c], eax
mov dword [esp + 0xa4], ecx
mov dword [esp], ebp
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], edi
shr eax, 2
shl eax, 2
mov dword [esp + 0x10], eax
call fcn.00413f30
mov eax, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xd0], ecx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x88], edx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x84], ebx
mov ebp, dword [esp + 0x20]
mov dword [esp + 0xcc], ebp
mov esi, dword [esp + 0xb8]
mov dword [esp], esi
mov esi, dword [esp + 0xa4]
mov dword [esp + 4], esi
shr eax, 2
mov dword [esp + 0x40], eax
mov dword [esp + 8], eax
call fcn.00465630
mov eax, dword [esp + 0xa4]
mov dword [esp], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 4], eax
call fcn.004133a0
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x2c]
sub eax, ecx
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xd8]
mov ebp, dword [esp + 0xd0]
mov esi, dword [esp + 0x84]
mov ebx, dword [esp + 0x88]
mov edi, dword [esp + 0xcc]
mov dword [esp + 0xb8], ebp
cmp eax, 4
jae 0x414f97
cmp eax, 2
jne 0x41510f
mov dword [esp + 0x54], esi
mov dword [esp + 0x4c], ebx
mov dword [esp + 0xb0], edi
movzx eax, byte [ebp]
and eax, 0xffffffcc
movzx edx, byte [ecx]
or edx, eax
mov byte [ebp], dl
mov dword [esp], ecx
mov dword [esp + 4], 1
call fcn.004133a0
mov eax, dword [esp + 8]
mov dword [esp + 0xa4], eax
mov ecx, dword [esp + 0xb8]
mov dword [esp], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0xc], ecx
call fcn.00413d10
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebx
call fcn.00413d10
mov edx, dword [esp + 0xd8]
mov ecx, dword [esp + 0xa4]
mov eax, edx
mov dword [esp], edx
sub ecx, eax
mov dword [esp + 4], ecx
call fcn.00465460
jmp 0x414f90
test edi, edi
jne 0x415140
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x9c]
jmp 0x415195
movzx eax, byte [edi]
mov dword [esp + 0x7c], eax
mov dword [esp], edi
call fcn.004133c0
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0xbc]
mov ebx, dword [esp + 0xd8]
mov ebp, dword [esp + 0xe0]
mov esi, dword [esp + 0xe4]
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x60], eax
mov eax, 8
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0xac], edi
mov edi, dword [esi]
cmp ebp, edi
jne 0x4151aa
mov ebp, dword [esi + 4]
shr ebp, 2
jmp 0x4151d2
test edi, edi
je 0x4155f0
mov eax, ebp
xor edx, edx
div edi
lea ebp, [eax - 1]
imul ebp, edi
add ebp, dword [esi + 4]
shr ebp, 2
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0xbc]
test ebp, ebp
je 0x415583
mov dword [esp + 0x38], ebp
mov esi, dword [esp + 0x84]
test esi, esi
jne 0x415233
mov esi, dword [esp + 0x60]
and esi, 0xf
or esi, 0xf0
cmp ebp, 4
ja 0x415205
mov edi, 4
jmp 0x4154a3
xchg esi, eax
mov byte [edx], al
xchg esi, eax
mov dword [esp], edx
call fcn.004133c0
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x60]
shr ecx, 4
mov edx, dword [esp + 0x3c]
add edx, 0xfffffffc
mov ebx, ecx
mov ebp, 4
mov ecx, dword [esp + 0x38]
jmp 0x4152b5
cmp esi, 2
jne 0x41556d
mov esi, dword [esp + 0x60]
and esi, 3
shl esi, 2
mov dword [esp + 0x50], esi
or esi, 0x40
cmp ebp, 1
jbe 0x41525c
mov esi, dword [esp + 0x50]
or esi, 0xc0
movzx eax, byte [edx]
and eax, 0x33
or esi, eax
xchg esi, eax
mov byte [edx], al
xchg esi, eax
mov dword [esp], edx
call fcn.004133c0
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x38]
cmp ecx, 2
ja 0x4152a2
mov ebx, dword [esp + 0xd8]
mov ebp, ecx
mov edi, 6
mov edx, eax
xor esi, esi
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x88]
jmp 0x4154a3
mov ebx, dword [esp + 0x60]
shr ebx, 2
mov ebp, dword [esp + 0x3c]
lea edx, [ebp - 2]
mov ebp, 2
add edx, 0xfffffffc
mov esi, dword [esp + 0xac]
jmp 0x415300
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x70], edx
mov dword [esp + 0x3c], esi
mov dword [esp + 0xac], ecx
xchg edi, ebx
mov byte [eax], bl
xchg edi, ebx
mov dword [esp], eax
call fcn.004133c0
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0x7c]
shr ebx, 4
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x70]
mov esi, dword [esp + 0xac]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x30], ebp
mov edi, ebx
and ebx, 0xf
or ebx, 0xf0
add ebp, 4
cmp ecx, ebp
jbe 0x415480
mov dword [esp + 0x3c], edx
mov dword [esp + 0xac], esi
mov dword [esp + 0x7c], edi
mov byte [eax], bl
mov dword [esp], eax
call fcn.004133c0
mov eax, dword [esp + 4]
mov dword [esp + 0xc0], eax
mov ecx, dword [esp + 0x7c]
shr ecx, 4
mov edx, dword [esp + 0xac]
mov ebx, dword [esp + 0xc4]
cmp edx, ebx
je 0x4153af
mov ebp, dword [esp + 0x3c]
cmp ebp, 8
jb 0x415365
add ebp, 0xfffffff8
jmp 0x4153a0
mov dword [esp + 0x78], ecx
movzx eax, byte [edx]
mov dword [esp + 0x7c], eax
mov dword [esp], edx
call fcn.004133c0
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x7c]
shl eax, cl
mov edx, dword [esp + 0x78]
or edx, eax
mov esi, dword [esp + 4]
mov eax, dword [esp + 0xc0]
mov ebx, dword [esp + 0xc4]
mov ebp, ecx
mov ecx, edx
mov edx, esi
mov esi, ebp
mov edi, ecx
mov ecx, edx
mov edx, dword [esp + 0x58]
jmp 0x415460
test edx, edx
je 0x41542e
mov ebp, dword [esp + 0x3c]
cmp ebp, 0x20
sbb esi, esi
movzx edx, byte [edx]
mov edi, ecx
mov ecx, ebp
shl edx, cl
and esi, edx
or edi, esi
mov edx, dword [esp + 0x58]
lea esi, [ecx + edx]
cmp esi, 8
jb 0x4153e2
lea esi, [ecx + edx - 8]
mov ecx, dword [esp + 0xa8]
jmp 0x415460
mov dword [esp + 0x74], edi
mov dword [esp + 0x3c], esi
mov eax, dword [esp + 0xa8]
movzx ecx, byte [eax]
mov dword [esp + 0x7c], ecx
mov dword [esp], eax
call fcn.004133c0
mov ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x7c]
shl edi, cl
mov eax, dword [esp + 0x74]
or edi, eax
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0xc4]
mov ecx, eax
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0xc0]
jmp 0x415460
mov ebp, dword [esp + 0x3c]
cmp ebp, 8
jae 0x41544c
mov esi, ecx
mov ecx, ebp
mov edi, dword [esp + 0x34]
shl edi, cl
or edi, esi
mov esi, dword [esp + 0x58]
lea ebp, [ecx + esi]
jmp 0x415452
mov esi, dword [esp + 0x58]
mov edi, ecx
add ebp, 0xfffffff8
mov edx, esi
mov ecx, dword [esp + 0xac]
mov esi, ebp
mov ebp, edi
and edi, 0xf
or edi, 0xf0
mov edx, dword [esp + 0x30]
add edx, 8
mov ebx, dword [esp + 0x38]
cmp ebx, edx
ja 0x4152c1
jmp 0x415486
mov edx, ebp
mov edi, ebx
mov ebx, ecx
mov ecx, dword [esp + 0x88]
mov ebp, ebx
mov esi, edi
mov ebx, dword [esp + 0xd8]
mov edi, edx
mov edx, eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x30], edi
cmp edi, ebp
jbe 0x4154e2
sub edi, ebp
lea ebp, [edi - 4]
xchg ebp, ebx
neg ebx
xchg ebp, ebx
cmp ebp, 0x20
sbb edi, edi
mov ecx, ebp
mov ebx, 1
shl ebx, cl
and ebx, edi
dec ebx
mov ebp, ebx
shl ebx, 4
or ebx, ebp
and esi, ebx
mov ecx, dword [esp + 0x88]
mov ebx, dword [esp + 0xd8]
mov edi, dword [esp + 0x30]
mov ebp, dword [esp + 0xdc]
shr ebp, 2
cmp edi, ebp
ja 0x41554c
mov dword [esp + 0x38], ebp
xchg esi, eax
mov byte [edx], al
xchg esi, eax
mov dword [esp], edx
call fcn.004133c0
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x30]
add ecx, 4
jmp 0x415527
mov dword [esp + 0x6c], ecx
mov byte [eax], 0
mov dword [esp], eax
call fcn.004133c0
mov eax, dword [esp + 0x6c]
lea ecx, [eax + 4]
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x38]
cmp ecx, edx
jbe 0x41550d
mov ebx, dword [esp + 0xd8]
mov ebp, edx
mov edi, ecx
mov edx, eax
xor esi, esi
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x88]
add ebp, 2
cmp edi, ebp
jne 0x415566
movzx ebp, byte [edx]
and ebp, 0xffffffcc
or esi, ebp
xchg esi, eax
mov byte [edx], al
xchg esi, eax
cmp eax, ecx
jmp 0x414e87
cmp eax, ecx
jmp 0x414e87
lea eax, [0x5db6b4]
mov dword [esp], eax
mov dword [esp + 4], 0x21
call fcn.004382f0
mov dword [esp], esi
call fcn.0045d7f0
mov eax, dword [esp + 4]
mov dword [esp + 0xd0], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x68], ecx
call fcn.004398f0
lea eax, [0x5d710d]
mov dword [esp], eax
mov dword [esp + 4], 0x17
call fcn.0043a480
mov eax, dword [esp + 0xd0]
mov dword [esp], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 4], eax
call fcn.0043a480
call fcn.00439ae0
call fcn.00439950
lea eax, [0x5de357]
mov dword [esp], eax
mov dword [esp + 4], 0x2d
call fcn.004382f0
call fcn.00436960
mov ecx, dword [esp + 0x88]
mov edi, ebx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0xc4], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x58], edx
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0xbc]
mov ebx, dword [esp + 0xd8]
mov ebp, dword [esp + 0xe0]
mov esi, dword [esp + 0xe4]
jmp 0x415124
mov eax, dword [esp + 0xac]
movzx ecx, byte [eax]
mov dword [esp + 0x64], ecx
mov dword [esp], eax
call fcn.004133c0
mov ecx, dword [esp + 0x48]
cmp ecx, 0x20
sbb eax, eax
lea edx, [ecx + 8]
mov ebx, dword [esp + 0x64]
shl ebx, cl
and ebx, eax
mov eax, dword [esp + 0x60]
or eax, ebx
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0xd8]
mov ebp, dword [esp + 0xe0]
mov esi, dword [esp + 0xe4]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x48], edx
mov dword [esp + 0xac], ecx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0xbc]
mov ebx, dword [esp + 0x48]
cmp ebx, edi
jb 0x415639
mov ebx, dword [esi]
shr ebx, 2
lea edi, [ebx + ebx]
cmp edi, 0x19
ja 0x4156c9
mov dword [esp + 0x3c], ebx
mov edi, dword [esp + 0x60]
jmp 0x415701
mov edi, dword [esp + 0x60]
mov ecx, esi
mov ebp, ebx
xor eax, eax
mov esi, edi
mov edx, ebp
xor ebx, ebx
jmp 0x4155f5
mov dword [esp + 0x34], edi
sbb eax, eax
mov ecx, ebx
shl edi, cl
and edi, eax
mov eax, dword [esp + 0x34]
or edi, eax
lea ebx, [ecx + ecx]
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x88]
cmp ebx, 0x20
jbe 0x4156de
mov ebx, dword [esp + 0x3c]
test bl, bl
je 0x415761
movzx edx, bl
mov word [esp + 0x2a], dx
mov edx, 0x19
movzx edx, dl
mov eax, edx
movzx ecx, word [esp + 0x2a]
xor edx, edx
div cx
movzx ecx, al
imul ecx, ebx
cmp ecx, 0x20
sbb edx, edx
mov eax, edx
mov edx, 1
shl edx, cl
and eax, edx
lea edx, [eax - 1]
and edi, edx
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0xbc]
mov ebx, ecx
mov ecx, dword [esp + 0x88]
jmp 0x4156cd
call fcn.00436960
nop
call fcn.00463a70
jmp fcn.00414a70