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

Disassembly:
sub esp, 0x54
push esi
mov esi, ecx
mov al, byte [esi + 0x38]
test al, al
mov dword [esp + 4], esi
jne 0x45a2ac
push ebx
mov ebx, dword [esp + 0x60]
push ebp
push edi
push 0
push 0x4e6484
push 0x4e65c0
push 0
push ebx
call fcn.004a1065
push 0
push 0x4e64a4
push 0x4e65c0
push 0
push ebx
mov edi, eax
call fcn.004a1065
add esp, 0x28
test edi, edi
je 0x45a2a9
mov ecx, dword [esi + 0xa0]
mov edx, dword [esi + 0x9c]
mov eax, dword [edi]
push ecx
mov ecx, dword [esi + 0x98]
push edx
mov edx, dword [esi + 0x94]
push ecx
push edx
mov ecx, edi
call dword [eax + 0x24]
mov ebp, eax
mov eax, dword [edi + 0x10]
test eax, eax
mov dword [esp + 0x18], ebp
jne 0x459913
mov eax, dword [esp + 0x74]
mov ecx, dword [ebx + 4]
imul ecx, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [edi]
add ecx, edx
lea edx, [ebp + ecx*4]
mov ecx, edi
mov dword [esp + 0x14], edx
call dword [eax + 0x34]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x78]
test al, al
je 0x45a2a9
mov ecx, dword [esi + 0xa0]
mov edx, dword [esi + 0x9c]
mov eax, dword [edi]
push ecx
mov ecx, dword [esi + 0x98]
push edx
mov edx, dword [esi + 0x94]
push ecx
push edx
mov ecx, edi
call dword [eax + 0x2c]
mov esi, dword [esi + 0x94]
cmp esi, 0x10
mov edi, eax
jne 0x4594c7
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x50]
imul eax, dword [esp + 0x70]
mov ebp, dword [esp + 0x6c]
cdq
sub eax, edx
mov edx, dword [ecx + 0x64]
sar eax, 1
add eax, ebp
lea eax, [edx + eax*2]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x74]
mov edx, ebx
mov ebp, dword [edx + 4]
imul ebp, dword [eax + 4]
mov ebx, dword [eax]
mov eax, dword [ecx + 0x98]
mov edx, dword [ecx + 0x9c]
mov dword [esp + 0x44], eax
mov eax, dword [ecx + 0x30]
mov esi, dword [eax + 0x3c]
add ebp, ebx
mov ebx, dword [ecx + 0xa0]
mov ecx, dword [eax + 0x40]
mov dword [esp + 0x3c], edx
mov edx, dword [eax + 0x48]
add ebp, edi
mov edi, dword [eax + 0x44]
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0x4c]
mov dword [esp + 0x48], edx
mov edx, dword [eax + 0x50]
mov eax, dword [esp + 0x78]
push 0x4ebdc0
push eax
mov dword [esp + 0x74], ebp
mov dword [esp + 0x28], ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x48], ecx
mov dword [esp + 0x40], edx
call fcn.0043fb70
add esp, 8
test al, al
je 0x45929a
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx + 0xc]
test eax, eax
mov dword [esp + 0x34], 0
jle 0x45a2a0
mov ecx, dword [esp + 0x14]
jmp 0x459130
mov ebp, dword [esp + 0x6c]
mov edx, dword [esp + 0x74]
mov edx, dword [edx + 8]
test edx, edx
mov eax, dword [esp + 0x70]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], eax
mov ebp, ecx
mov dword [esp + 0x2c], edx
jle 0x459240
mov ecx, dword [esp + 0x24]
mov cl, byte [ecx]
mov byte [esp + 0x78], cl
movzx ecx, cl
cmp ecx, edx
jg 0x459166
mov dl, byte [esp + 0x78]
test dword [ebp], 0xffffff
movzx ecx, dl
jne 0x459182
lea eax, [eax + ecx*2]
lea ebp, [ebp + ecx*4]
mov dword [esp + 0x28], eax
jmp 0x459226
test ecx, ecx
mov dword [esp + 0x4c], ecx
jle 0x459226
mov dword [esp + 0x30], ecx
mov edx, dword [ebp]
movzx eax, word [eax]
add ebp, 4
mov dword [esp + 0x78], ebp
mov ebp, eax
and ebp, ebx
mov ecx, edx
and ecx, ebx
add ebp, ecx
mov ecx, edi
shr ebp, cl
mov ecx, dword [esp + 0x38]
xor ebx, ebx
mov bx, word [ecx + ebp*4]
mov ecx, edi
shl bx, cl
mov ecx, dword [esp + 0x3c]
mov edi, eax
and edi, ecx
mov ebp, edx
and ebp, ecx
mov ecx, dword [esp + 0x1c]
add edi, ebp
mov ebp, dword [esp + 0x40]
shr edi, cl
movzx edi, word [ebp + edi*4]
shl di, cl
mov ecx, dword [esp + 0x44]
and eax, ecx
and edx, ecx
add eax, edx
mov edx, dword [esp + 0x48]
mov ebp, dword [esp + 0x78]
mov ecx, esi
shr eax, cl
or ebx, edi
mov edi, dword [esp + 0x18]
movzx eax, word [edx + eax*4]
shl ax, cl
mov ecx, dword [esp + 0x30]
or ebx, eax
mov eax, dword [esp + 0x28]
mov word [eax], bx
mov ebx, dword [esp + 0x20]
add eax, 2
dec ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], ecx
jne 0x459192
mov ecx, dword [esp + 0x4c]
add dword [esp + 0x24], ecx
mov edx, dword [esp + 0x2c]
sub edx, ecx
test edx, edx
mov dword [esp + 0x2c], edx
jg 0x459151
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x50]
mov ebp, dword [esp + 0x6c]
cdq
sub eax, edx
mov edx, dword [esp + 0x70]
sar eax, 1
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x70], eax
mov eax, dword [edx + 4]
mov edx, dword [esp + 0x74]
add ebp, eax
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x6c], ebp
mov ebp, dword [edx + 0xc]
inc eax
cmp eax, ebp
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], eax
jl 0x45912c
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x7c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x54
ret 0x14
mov eax, dword [esp + 0x78]
mov ebp, dword [eax + 0xc]
mov ecx, dword [eax]
imul ecx, ebp
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x78]
mov ecx, dword [ecx + 4]
sar edx, 7
imul ecx, ebp
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x58], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x78]
mov ecx, dword [ecx + 8]
sar edx, 7
imul ecx, ebp
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x54], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x74]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ecx + 0xc]
test eax, eax
mov dword [esp + 0x4c], edx
mov dword [esp + 0x2c], 0
jle 0x45a2a0
jmp 0x459320
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x24], edx
mov edx, dword [eax + 8]
test edx, edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], edx
jle 0x459469
jmp 0x459350
mov eax, dword [esp + 0x24]
mov al, byte [eax]
mov byte [esp + 0x78], al
movzx eax, al
cmp eax, edx
jg 0x459365
mov dl, byte [esp + 0x78]
test dword [ebp], 0xffffff
movzx eax, dl
jne 0x459381
lea ecx, [ecx + eax*2]
lea ebp, [ebp + eax*4]
mov dword [esp + 0x28], ecx
jmp 0x459453
test eax, eax
mov dword [esp + 0x5c], eax
jle 0x459453
mov dword [esp + 0x34], eax
mov eax, dword [ebp]
movzx edx, word [ecx]
add ebp, 4
mov dword [esp + 0x78], ebp
mov ebp, eax
and ebp, ebx
mov ecx, edi
shr ebp, cl
mov ecx, edx
and ecx, ebx
mov ebx, ecx
imul ebp, dword [esp + 0x4c]
mov ecx, edi
shr ebx, cl
mov ecx, dword [esp + 0x38]
shr ebp, 8
add ebp, ebx
xor ebx, ebx
mov bx, word [ecx + ebp*4]
mov ecx, edi
mov edi, dword [esp + 0x3c]
shl bx, cl
mov ecx, dword [esp + 0x1c]
mov ebp, eax
and ebp, edi
shr ebp, cl
mov ecx, edx
and ecx, edi
mov edi, ecx
imul ebp, dword [esp + 0x54]
mov ecx, dword [esp + 0x1c]
shr edi, cl
mov ecx, dword [esp + 0x40]
shr ebp, 8
add ebp, edi
xor edi, edi
mov di, word [ecx + ebp*4]
mov ecx, dword [esp + 0x1c]
shl di, cl
mov ecx, esi
mov ebp, dword [esp + 0x78]
or ebx, edi
mov edi, dword [esp + 0x44]
and eax, edi
shr eax, cl
and edx, edi
shr edx, cl
mov edi, dword [esp + 0x18]
imul eax, dword [esp + 0x58]
shr eax, 8
add eax, edx
mov edx, dword [esp + 0x48]
movzx eax, word [edx + eax*4]
shl ax, cl
mov ecx, dword [esp + 0x28]
add ecx, 2
mov dword [esp + 0x28], ecx
or ebx, eax
mov eax, dword [esp + 0x34]
mov word [ecx - 2], bx
mov ebx, dword [esp + 0x20]
dec eax
mov dword [esp + 0x34], eax
jne 0x459391
mov eax, dword [esp + 0x5c]
add dword [esp + 0x24], eax
mov edx, dword [esp + 0x30]
sub edx, eax
test edx, edx
mov dword [esp + 0x30], edx
jg 0x459350
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x50]
mov ecx, dword [esp + 0x68]
mov ebp, dword [esp + 0x6c]
cdq
sub eax, edx
mov edx, dword [esp + 0x70]
sar eax, 1
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x70], eax
mov eax, dword [ecx + 4]
lea ecx, [edx + eax*4]
mov edx, dword [esp + 0x74]
add ebp, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x14], ecx
mov ecx, dword [edx + 0xc]
inc eax
cmp eax, ecx
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x2c], eax
jl 0x459320
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x7c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x54
ret 0x14
cmp esi, 0x20
jne 0x45a2a0
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x50]
imul eax, dword [esp + 0x70]
mov ebx, dword [esp + 0x6c]
cdq
and edx, 3
add eax, edx
mov edx, dword [ecx + 0x64]
sar eax, 2
add eax, ebx
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x68]
mov ebx, dword [ecx + 0xa0]
mov dword [esp + 0x70], eax
mov eax, dword [edx + 4]
mov edx, dword [esp + 0x74]
imul eax, dword [edx + 4]
mov esi, dword [edx]
mov edx, dword [ecx + 0x9c]
mov ebp, dword [esp + 0x78]
add eax, esi
add eax, edi
mov dword [esp + 0x6c], eax
mov eax, dword [ecx + 0x98]
mov dword [esp + 0x30], eax
mov eax, dword [ecx + 0x30]
mov ecx, dword [eax + 0x40]
mov edi, dword [eax + 0x44]
mov esi, dword [eax + 0x3c]
mov dword [esp + 0x38], edx
mov edx, dword [eax + 0x48]
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 0x4c]
mov dword [esp + 0x2c], edx
mov edx, dword [eax + 0x50]
push 0x4ebdc0
push ebp
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x44], edx
call fcn.0043fb70
add esp, 8
test al, al
je 0x4596f6
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0xc]
test ecx, ecx
mov dword [esp + 0x40], 0
jle 0x45a2a0
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp + 0x70]
mov edi, edi
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x74]
mov edx, dword [edx + 8]
test edx, edx
mov eax, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x44], edx
jle 0x45969a
mov ecx, dword [esp + 0x24]
mov cl, byte [ecx]
mov byte [esp + 0x78], cl
movzx ecx, cl
cmp ecx, edx
jg 0x4595c6
mov dl, byte [esp + 0x78]
test dword [ebp], 0xffffff
movzx ecx, dl
jne 0x4595e6
lea edx, [ecx*4]
add ebp, edx
add eax, edx
mov dword [esp + 0x28], eax
jmp 0x459680
test ecx, ecx
mov dword [esp + 0x5c], ecx
jle 0x459680
mov dword [esp + 0x48], ecx
mov edx, dword [ebp]
mov eax, dword [eax]
add ebp, 4
mov dword [esp + 0x78], ebp
mov ebp, eax
and ebp, ebx
mov ecx, edx
and ecx, ebx
add ebp, ecx
mov ecx, edi
shr ebp, cl
mov ecx, dword [esp + 0x3c]
mov ebx, dword [ecx + ebp*4]
mov ecx, edi
shl ebx, cl
mov ecx, dword [esp + 0x38]
mov edi, eax
and edi, ecx
mov ebp, edx
and ebp, ecx
mov ecx, dword [esp + 0x20]
add edi, ebp
mov ebp, dword [esp + 0x34]
shr edi, cl
mov edi, dword [ebp + edi*4]
mov ebp, dword [esp + 0x78]
shl edi, cl
mov ecx, dword [esp + 0x30]
and eax, ecx
and edx, ecx
add eax, edx
mov edx, dword [esp + 0x2c]
mov ecx, esi
shr eax, cl
or ebx, edi
mov edi, dword [esp + 0x1c]
mov eax, dword [edx + eax*4]
shl eax, cl
mov ecx, dword [esp + 0x48]
or ebx, eax
mov eax, dword [esp + 0x28]
mov dword [eax], ebx
mov ebx, dword [esp + 0x18]
add eax, 4
dec ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x48], ecx
jne 0x4595f6
mov ecx, dword [esp + 0x5c]
add dword [esp + 0x24], ecx
mov edx, dword [esp + 0x44]
sub edx, ecx
test edx, edx
mov dword [esp + 0x44], edx
jg 0x4595b1
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x50]
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x14]
sar eax, 2
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x68]
mov eax, dword [eax + 4]
lea ebp, [edx + eax*4]
mov edx, dword [esp + 0x6c]
add edx, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x74]
inc eax
cmp eax, dword [edx + 0xc]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x40], eax
jl 0x459590
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x7c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x54
ret 0x14
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp]
imul ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [ebp + 4]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0xc]
mov ebp, dword [ebp + 8]
imul ecx, eax
mov dword [esp + 0x78], eax
imul ebp, dword [esp + 0x78]
mov dword [esp + 0x50], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x54], edx
mov eax, 0x80808081
imul ebp
add edx, ebp
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ecx + 0xc]
test eax, eax
mov dword [esp + 0x5c], edx
mov dword [esp + 0x40], 0
jle 0x45a2a0
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x24], edx
mov edx, dword [eax + 8]
test edx, edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x44], edx
jle 0x4598b1
jmp 0x4597a0
mov eax, dword [esp + 0x24]
mov al, byte [eax]
mov byte [esp + 0x78], al
movzx eax, al
cmp eax, edx
jg 0x4597b5
mov dl, byte [esp + 0x78]
test dword [ebp], 0xffffff
movzx eax, dl
jne 0x4597d5
lea edx, [eax*4]
add ebp, edx
add ecx, edx
mov dword [esp + 0x28], ecx
jmp 0x45989b
test eax, eax
mov dword [esp + 0x4c], eax
jle 0x45989b
mov dword [esp + 0x48], eax
mov eax, dword [ebp]
mov edx, dword [ecx]
add ebp, 4
mov dword [esp + 0x78], ebp
mov ebp, eax
and ebp, ebx
mov ecx, edi
shr ebp, cl
mov ecx, edx
and ecx, ebx
mov ebx, ecx
imul ebp, dword [esp + 0x5c]
mov ecx, edi
shr ebx, cl
mov ecx, dword [esp + 0x3c]
shr ebp, 8
add ebp, ebx
mov ebx, dword [ecx + ebp*4]
mov ecx, edi
mov edi, dword [esp + 0x38]
shl ebx, cl
mov ecx, dword [esp + 0x20]
mov ebp, eax
and ebp, edi
shr ebp, cl
mov ecx, edx
and ecx, edi
mov edi, ecx
imul ebp, dword [esp + 0x54]
mov ecx, dword [esp + 0x20]
shr edi, cl
mov ecx, dword [esp + 0x34]
shr ebp, 8
add ebp, edi
mov edi, dword [ecx + ebp*4]
mov ecx, dword [esp + 0x20]
shl edi, cl
mov ecx, esi
mov ebp, dword [esp + 0x78]
or ebx, edi
mov edi, dword [esp + 0x30]
and eax, edi
shr eax, cl
and edx, edi
mov edi, dword [esp + 0x1c]
shr edx, cl
imul eax, dword [esp + 0x50]
shr eax, 8
add eax, edx
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + eax*4]
shl eax, cl
mov ecx, dword [esp + 0x28]
add ecx, 4
mov dword [esp + 0x28], ecx
or ebx, eax
mov eax, dword [esp + 0x48]
mov dword [ecx - 4], ebx
mov ebx, dword [esp + 0x18]
dec eax
mov dword [esp + 0x48], eax
jne 0x4597e5
mov eax, dword [esp + 0x4c]
add dword [esp + 0x24], eax
mov edx, dword [esp + 0x44]
sub edx, eax
test edx, edx
mov dword [esp + 0x44], edx
jg 0x4597a0
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x50]
mov ecx, dword [esp + 0x68]
mov ebp, dword [esp + 0x6c]
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x70]
sar eax, 2
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x70], eax
mov eax, dword [ecx + 4]
lea ecx, [edx + eax*4]
mov edx, dword [esp + 0x74]
add ebp, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x14], ecx
mov ecx, dword [edx + 0xc]
inc eax
cmp eax, ecx
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x40], eax
jl 0x459770
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x7c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x54
ret 0x14
mov ecx, dword [esp + 0x74]
mov eax, dword [ebx + 4]
imul eax, dword [ecx + 4]
mov ebx, dword [edi + 0x14]
mov edx, dword [ecx]
add eax, ebx
add eax, edx
mov edx, dword [edi]
mov ecx, edi
mov dword [esp + 0x14], eax
call dword [edx + 0x34]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x78]
test al, al
je 0x45a2a9
mov eax, dword [esi + 0xa0]
mov ecx, dword [esi + 0x9c]
mov edx, dword [edi]
push eax
mov eax, dword [esi + 0x98]
push ecx
mov ecx, dword [esi + 0x94]
push eax
push ecx
mov ecx, edi
call dword [edx + 0x2c]
mov esi, dword [esi + 0x94]
cmp esi, 0x10
mov edi, eax
jne 0x459e1b
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x50]
imul eax, dword [esp + 0x70]
cdq
sub eax, edx
mov edx, dword [esp + 0x6c]
sar eax, 1
add eax, edx
mov edx, dword [ecx + 0x64]
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x6c], eax
mov eax, dword [edx + 4]
mov edx, dword [esp + 0x74]
imul eax, dword [edx + 4]
mov ebx, dword [edx]
mov edx, dword [ecx + 0x9c]
add eax, ebx
mov ebx, dword [ecx + 0xa0]
add eax, edi
mov dword [esp + 0x1c], eax
mov eax, dword [ecx + 0x98]
mov dword [esp + 0x34], eax
mov eax, dword [ecx + 0x30]
mov ecx, dword [eax + 0x40]
mov edi, dword [eax + 0x44]
mov esi, dword [eax + 0x3c]
mov dword [esp + 0x3c], edx
mov edx, dword [eax + 0x48]
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 0x4c]
mov dword [esp + 0x4c], edx
mov edx, dword [eax + 0x50]
mov eax, dword [esp + 0x78]
push 0x4ebdc0
push eax
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x48], edx
call fcn.0043fb70
add esp, 8
test al, al
je 0x459bcd
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx + 0xc]
test eax, eax
mov dword [esp + 0x44], 0
jle 0x45a2a0
jmp 0x459a30
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x74]
mov edx, dword [edx + 8]
test edx, edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x48], edx
jle 0x459b70
jmp 0x459a60
mov ecx, dword [esp + 0x70]
movzx ecx, byte [ecx]
mov ecx, dword [ebp + ecx*4]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x30]
mov cl, byte [ecx]
mov byte [esp + 0x78], cl
movzx ecx, cl
cmp ecx, edx
jg 0x459a84
mov dl, byte [esp + 0x78]
test dword [esp + 0x5c], 0xffffff
movzx ecx, dl
jne 0x459aa7
mov edx, dword [esp + 0x70]
add edx, ecx
lea eax, [eax + ecx*2]
mov dword [esp + 0x70], edx
mov dword [esp + 0x2c], eax
jmp 0x459b5a
test ecx, ecx
mov dword [esp + 0x5c], ecx
jle 0x459b5a
mov dword [esp + 0x78], ecx
jmp 0x459ac0
movzx eax, word [eax]
mov ecx, dword [esp + 0x70]
movzx edx, byte [ecx]
mov edx, dword [ebp + edx*4]
inc ecx
mov dword [esp + 0x70], ecx
mov ebp, eax
and ebp, ebx
mov ecx, edx
and ecx, ebx
add ebp, ecx
mov ecx, edi
shr ebp, cl
mov ecx, dword [esp + 0x40]
xor ebx, ebx
mov bx, word [ecx + ebp*4]
mov ecx, edi
shl bx, cl
mov ecx, dword [esp + 0x3c]
mov edi, eax
and edi, ecx
mov ebp, edx
and ebp, ecx
mov ecx, dword [esp + 0x20]
add edi, ebp
mov ebp, dword [esp + 0x38]
shr edi, cl
movzx edi, word [ebp + edi*4]
shl di, cl
mov ecx, dword [esp + 0x34]
and eax, ecx
and edx, ecx
add eax, edx
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x18]
mov ecx, esi
shr eax, cl
or ebx, edi
mov edi, dword [esp + 0x24]
movzx eax, word [edx + eax*4]
shl ax, cl
mov ecx, dword [esp + 0x78]
or ebx, eax
mov eax, dword [esp + 0x2c]
mov word [eax], bx
mov ebx, dword [esp + 0x28]
add eax, 2
dec ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x78], ecx
jne 0x459ac0
mov ecx, dword [esp + 0x5c]
add dword [esp + 0x30], ecx
mov edx, dword [esp + 0x48]
sub edx, ecx
test edx, edx
mov dword [esp + 0x48], edx
jg 0x459a60
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x50]
mov ecx, dword [esp + 0x68]
cdq
sub eax, edx
mov edx, dword [esp + 0x6c]
sar eax, 1
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x6c], eax
mov eax, dword [ecx + 4]
mov ecx, dword [esp + 0x1c]
add edx, eax
add ecx, eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x74]
mov dword [esp + 0x1c], ecx
mov ecx, dword [edx + 0xc]
inc eax
cmp eax, ecx
mov dword [esp + 0x44], eax
jl 0x459a30
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x7c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x54
ret 0x14
mov ecx, dword [esp + 0x78]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx]
imul ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x78]
mov ecx, dword [eax + 4]
mov eax, dword [eax + 0xc]
imul ecx, eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x50], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x78]
mov ecx, dword [edx + 8]
imul ecx, dword [esp + 0x70]
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x74]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ecx + 0xc]
test eax, eax
mov dword [esp + 0x58], edx
mov dword [esp + 0x44], 0
jle 0x45a2a0
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x74]
mov edx, dword [edx + 8]
test edx, edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x48], edx
jle 0x459dbe
lea ecx, [ecx]
mov eax, dword [esp + 0x70]
movzx eax, byte [eax]
mov eax, dword [ebp + eax*4]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x2c]
mov al, byte [eax]
mov byte [esp + 0x78], al
movzx eax, al
cmp eax, edx
jg 0x459ca4
mov dl, byte [esp + 0x78]
test dword [esp + 0x5c], 0xffffff
movzx eax, dl
jne 0x459cc7
mov edx, dword [esp + 0x70]
add edx, eax
lea ecx, [ecx + eax*2]
mov dword [esp + 0x70], edx
mov dword [esp + 0x30], ecx
jmp 0x459da8
test eax, eax
mov dword [esp + 0x60], eax
jle 0x459da8
mov dword [esp + 0x78], eax
jmp 0x459ce0
mov edx, dword [esp + 0x70]
movzx eax, byte [edx]
mov eax, dword [ebp + eax*4]
mov ebp, eax
and ebp, ebx
inc edx
mov dword [esp + 0x70], edx
movzx edx, word [ecx]
mov ecx, edi
shr ebp, cl
mov ecx, edx
and ecx, ebx
mov ebx, ecx
imul ebp, dword [esp + 0x58]
mov ecx, edi
shr ebx, cl
mov ecx, dword [esp + 0x40]
shr ebp, 8
add ebp, ebx
xor ebx, ebx
mov bx, word [ecx + ebp*4]
mov ecx, edi
mov edi, dword [esp + 0x3c]
shl bx, cl
mov ecx, dword [esp + 0x20]
mov ebp, eax
and ebp, edi
shr ebp, cl
mov ecx, edx
and ecx, edi
mov edi, ecx
imul ebp, dword [esp + 0x54]
mov ecx, dword [esp + 0x20]
shr edi, cl
mov ecx, dword [esp + 0x38]
shr ebp, 8
add ebp, edi
xor edi, edi
mov di, word [ecx + ebp*4]
mov ecx, dword [esp + 0x20]
shl di, cl
mov ecx, esi
mov ebp, dword [esp + 0x18]
or ebx, edi
mov edi, dword [esp + 0x34]
and eax, edi
shr eax, cl
and edx, edi
shr edx, cl
mov edi, dword [esp + 0x24]
imul eax, dword [esp + 0x50]
shr eax, 8
add eax, edx
mov edx, dword [esp + 0x4c]
movzx eax, word [edx + eax*4]
shl ax, cl
mov ecx, dword [esp + 0x30]
add ecx, 2
mov dword [esp + 0x30], ecx
or ebx, eax
mov eax, dword [esp + 0x78]
mov word [ecx - 2], bx
mov ebx, dword [esp + 0x28]
dec eax
mov dword [esp + 0x78], eax
jne 0x459ce0
mov eax, dword [esp + 0x60]
add dword [esp + 0x2c], eax
mov edx, dword [esp + 0x48]
sub edx, eax
test edx, edx
mov dword [esp + 0x48], edx
jg 0x459c80
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x50]
mov ecx, dword [esp + 0x68]
cdq
sub eax, edx
mov edx, dword [esp + 0x6c]
sar eax, 1
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x6c], eax
mov eax, dword [ecx + 4]
mov ecx, dword [esp + 0x1c]
add edx, eax
add ecx, eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x74]
mov dword [esp + 0x1c], ecx
mov ecx, dword [edx + 0xc]
inc eax
cmp eax, ecx
mov dword [esp + 0x44], eax
jl 0x459c52
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x7c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x54
ret 0x14
cmp esi, 0x20
jne 0x45a2a0
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x50]
imul eax, dword [esp + 0x70]
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x6c]
sar eax, 2
add eax, edx
mov edx, dword [ecx + 0x64]
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x6c], eax
mov eax, dword [edx + 4]
mov edx, dword [esp + 0x74]
imul eax, dword [edx + 4]
mov ebx, dword [edx]
mov edx, dword [ecx + 0x9c]
add eax, ebx
mov ebx, dword [ecx + 0xa0]
add eax, edi
mov dword [esp + 0x1c], eax
mov eax, dword [ecx + 0x98]
mov dword [esp + 0x38], eax
mov eax, dword [ecx + 0x30]
mov ecx, dword [eax + 0x40]
mov edi, dword [eax + 0x44]
mov esi, dword [eax + 0x3c]
mov dword [esp + 0x40], edx
mov edx, dword [eax + 0x48]
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x4c]
mov dword [esp + 0x34], edx
mov edx, dword [eax + 0x50]
mov eax, dword [esp + 0x78]
push 0x4ebdc0
push eax
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x44], ecx
mov dword [esp + 0x4c], edx
call fcn.0043fb70
add esp, 8
test al, al
je 0x45a06e
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx + 0xc]
test eax, eax
mov dword [esp + 0x48], 0
jle 0x45a2a0
lea ebx, [ebx]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x74]
mov edx, dword [edx + 8]
test edx, edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x4c], edx
jle 0x45a00d
jmp 0x459f10
mov ecx, dword [esp + 0x70]
movzx ecx, byte [ecx]
mov ecx, dword [ebp + ecx*4]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x2c]
mov cl, byte [ecx]
mov byte [esp + 0x78], cl
movzx ecx, cl
cmp ecx, edx
jg 0x459f34
mov dl, byte [esp + 0x78]
test dword [esp + 0x60], 0xffffff
movzx ecx, dl
jne 0x459f57
mov edx, dword [esp + 0x70]
add edx, ecx
lea eax, [eax + ecx*4]
mov dword [esp + 0x70], edx
mov dword [esp + 0x30], eax
jmp 0x459ff7
test ecx, ecx
mov dword [esp + 0x60], ecx
jle 0x459ff7
mov dword [esp + 0x78], ecx
mov eax, dword [eax]
mov ecx, dword [esp + 0x70]
movzx edx, byte [ecx]
mov edx, dword [ebp + edx*4]
inc ecx
mov dword [esp + 0x70], ecx
mov ebp, eax
and ebp, ebx
mov ecx, edx
and ecx, ebx
add ebp, ecx
mov ecx, edi
shr ebp, cl
mov ecx, dword [esp + 0x44]
mov ebx, dword [ecx + ebp*4]
mov ecx, edi
shl ebx, cl
mov ecx, dword [esp + 0x40]
mov edi, eax
and edi, ecx
mov ebp, edx
and ebp, ecx
mov ecx, dword [esp + 0x28]
add edi, ebp
mov ebp, dword [esp + 0x3c]
shr edi, cl
mov edi, dword [ebp + edi*4]
mov ebp, dword [esp + 0x18]
shl edi, cl
mov ecx, dword [esp + 0x38]
and eax, ecx
and edx, ecx
add eax, edx
mov edx, dword [esp + 0x34]
mov ecx, esi
shr eax, cl
or ebx, edi
mov edi, dword [esp + 0x24]
mov eax, dword [edx + eax*4]
shl eax, cl
mov ecx, dword [esp + 0x78]
or ebx, eax
mov eax, dword [esp + 0x30]
mov dword [eax], ebx
mov ebx, dword [esp + 0x20]
add eax, 4
dec ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x78], ecx
jne 0x459f67
mov ecx, dword [esp + 0x60]
add dword [esp + 0x2c], ecx
mov edx, dword [esp + 0x4c]
sub edx, ecx
test edx, edx
mov dword [esp + 0x4c], edx
jg 0x459f10
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x50]
mov ecx, dword [esp + 0x68]
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x6c]
sar eax, 2
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x6c], eax
mov eax, dword [ecx + 4]
mov ecx, dword [esp + 0x1c]
add edx, eax
add ecx, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x74]
mov dword [esp + 0x1c], ecx
mov ecx, dword [edx + 0xc]
inc eax
cmp eax, ecx
mov dword [esp + 0x48], eax
jl 0x459ee0
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x7c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x54
ret 0x14
mov ecx, dword [esp + 0x78]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx]
imul ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x78]
mov ecx, dword [eax + 4]
mov eax, dword [eax + 0xc]
imul ecx, eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x54], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x78]
mov ecx, dword [edx + 8]
imul ecx, dword [esp + 0x70]
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x74]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ecx + 0xc]
test eax, eax
mov dword [esp + 0x5c], edx
mov dword [esp + 0x48], 0
jle 0x45a2a0
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x74]
mov edx, dword [edx + 8]
test edx, edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x4c], edx
jle 0x45a252
mov edi, edi
mov eax, dword [esp + 0x70]
movzx eax, byte [eax]
mov eax, dword [ebp + eax*4]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x2c]
mov al, byte [eax]
mov byte [esp + 0x78], al
movzx eax, al
cmp eax, edx
jg 0x45a144
mov dl, byte [esp + 0x78]
test dword [esp + 0x60], 0xffffff
movzx eax, dl
jne 0x45a167
mov edx, dword [esp + 0x70]
add edx, eax
lea ecx, [ecx + eax*4]
mov dword [esp + 0x70], edx
mov dword [esp + 0x30], ecx
jmp 0x45a23c
test eax, eax
mov dword [esp + 0x50], eax
jle 0x45a23c
mov dword [esp + 0x78], eax
jmp 0x45a180
mov edx, dword [esp + 0x70]
movzx eax, byte [edx]
mov eax, dword [ebp + eax*4]
mov ebp, eax
and ebp, ebx
inc edx
mov dword [esp + 0x70], edx
mov edx, dword [ecx]
mov ecx, edi
shr ebp, cl
mov ecx, edx
and ecx, ebx
mov ebx, ecx
imul ebp, dword [esp + 0x5c]
mov ecx, edi
shr ebx, cl
mov ecx, dword [esp + 0x44]
shr ebp, 8
add ebp, ebx
mov ebx, dword [ecx + ebp*4]
mov ecx, edi
mov edi, dword [esp + 0x40]
shl ebx, cl
mov ecx, dword [esp + 0x28]
mov ebp, eax
and ebp, edi
shr ebp, cl
mov ecx, edx
and ecx, edi
mov edi, ecx
imul ebp, dword [esp + 0x58]
mov ecx, dword [esp + 0x28]
shr edi, cl
mov ecx, dword [esp + 0x3c]
shr ebp, 8
add ebp, edi
mov edi, dword [ecx + ebp*4]
mov ecx, dword [esp + 0x28]
shl edi, cl
mov ecx, esi
mov ebp, dword [esp + 0x18]
or ebx, edi
mov edi, dword [esp + 0x38]
and eax, edi
shr eax, cl
and edx, edi
mov edi, dword [esp + 0x24]
shr edx, cl
imul eax, dword [esp + 0x54]
shr eax, 8
add eax, edx
mov edx, dword [esp + 0x34]
mov eax, dword [edx + eax*4]
shl eax, cl
mov ecx, dword [esp + 0x30]
add ecx, 4
mov dword [esp + 0x30], ecx
or ebx, eax
mov eax, dword [esp + 0x78]
mov dword [ecx - 4], ebx
mov ebx, dword [esp + 0x20]
dec eax
mov dword [esp + 0x78], eax
jne 0x45a180
mov eax, dword [esp + 0x50]
add dword [esp + 0x2c], eax
mov edx, dword [esp + 0x4c]
sub edx, eax
test edx, edx
mov dword [esp + 0x4c], edx
jg 0x45a120
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x50]
mov ecx, dword [esp + 0x68]
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x6c]
sar eax, 2
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x6c], eax
mov eax, dword [ecx + 4]
mov ecx, dword [esp + 0x1c]
add edx, eax
add ecx, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x74]
mov dword [esp + 0x1c], ecx
mov ecx, dword [edx + 0xc]
inc eax
cmp eax, ecx
mov dword [esp + 0x48], eax
jl 0x45a0f3
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x7c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x54
ret 0x14