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

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0xb0
mov esi, dword [esp + 0xc8]
mov dword [esp + 0x64], esi
mov edi, dword [esp + 0xf4]
mov esi, dword [esi]
mov dword [esp + 0x9c], esi
mov esi, dword [esp + 0xdc]
mov ebp, dword [esp + 0xd8]
mov ecx, dword [esp + 0xe8]
mov esi, dword [esi]
mov dword [esp + 0xac], esi
mov dword [esp + 0x50], esi
mov esi, dword [edi + 0x10]
mov dword [esp + 0x5c], ebp
mov ebx, dword [esp + 0xc4]
mov ebp, dword [ebp]
mov dword [esp + 0x88], ecx
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0xec]
mov dword [esp + 0x54], edi
mov dword [esp + 0xa8], ebp
mov dword [esp + 0x4c], ebp
mov edx, dword [esp + 0xd0]
mov ebp, dword [esp + 0xcc]
mov edi, dword [edi + 0x14]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x7c], esi
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xf0]
movzx esi, word [esi*2 + 0x616d08]
mov dword [esp + 0x68], ebx
mov ebx, dword [ebx]
mov dword [esp + 0x60], edx
mov dword [esp + 0x98], ebx
mov dword [esp + 0x78], edi
mov ebx, dword [ebp]
mov edx, dword [edx]
movzx edi, word [edi*2 + 0x616d08]
mov dword [esp + 0x80], ecx
mov dword [esp + 0x74], esi
lea esi, [ecx + esi*2 + 2]
mov dword [esp + 0x58], eax
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], edx
mov dword [esp + 0x70], edi
mov dword [esp + 0x6c], esi
mov ecx, dword [esp + 0xdc]
cmp dword [eax], 2
je 0x4617ad
mov dword [esp + 0x48], 0
mov dword [esp + 0xa4], ebp
mov dword [esp + 0xa0], ecx
mov ebp, dword [esp + 0xac]
mov esi, dword [esp + 0x9c]
cmp esi, 6
jle 0x461197
cmp ebp, 8
jle 0x461197
lea edi, [esp + 0x9c]
lea esi, [esp + 0x4c]
lea ebp, [esp + 0x50]
lea ebx, [esp + 0xe0]
lea ecx, [esp + 0x94]
lea edx, [esp + 0x90]
lea eax, [esp + 8]
push dword [esp + 0x6c]
push dword [esp + 0x84]
push dword [esp + 0x8c]
push dword [esp + 0x98]
push dword [esp + 0x98]
push eax
push dword [esp + 0x88]
push dword [esp + 0x90]
push dword [esp + 0x98]
push dword [esp + 0xa0]
push edx
push ecx
push ebx
push ebp
push esi
push edi
lea eax, [esp + 0xd8]
push eax
call fcn.00465110
add esp, 0x44
test eax, eax
je 0x461658
mov edx, eax
and eax, 0xf
mov edi, dword [esp + 8]
mov ebx, edi
add eax, 0xfffffffe
and edi, 0xf
sar edx, 0x10
shr ebx, 0x10
mov dword [esp + 0x44], edx
cmp eax, 4
mov dword [esp + 0x48], ebx
ja case.default.0x460ac8
mov eax, dword [eax*4 + 0x616d28]
jmp eax
mov ebp, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x44]
mov edi, ecx
cmp ecx, ebp
jle 0x460af1
sub dword [esp + 0x44], ebp
mov edi, ebp
test ebp, ebp
je 0x4611f7
mov esi, 5
jmp 0x460af6
mov esi, 1
mov ebx, dword [esp + 0xe0]
cmp ebx, dword [esp + 0x48]
jae 0x460ed9
cmp dword [esp + 0x88], 0
je 0x4613ee
mov ebp, ebx
xor ecx, ecx
mov edx, dword [esp + 0x48]
sub ebp, edx
add ebp, edi
cmovs ebp, ecx
mov ecx, edi
sub edx, dword [esp + 0x8c]
sub ecx, ebp
sub edx, ebx
mov dword [esp + 0x28], ebp
test edx, edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x2c], edx
jle 0x4612db
mov ebx, ecx
mov edx, ebx
mov ecx, dword [esp + 0x2c]
sub edx, ecx
xor ebp, ebp
test edx, edx
cmovle edx, ebp
mov dword [esp + 0x20], edx
mov edx, ecx
cmovle edx, ebx
test edx, edx
jle 0x460c7c
cmp edx, 6
jle 0x460c00
mov ebp, dword [esp + 0x84]
mov ebx, dword [esp + 0x88]
add ebx, ebp
sub ebx, dword [esp + 0x2c]
mov dword [esp + 0x18], ebx
cmp eax, ebx
jbe 0x460b96
mov ebx, eax
sub ebx, dword [esp + 0x18]
cmp edx, ebx
jle 0x460ba6
cmp eax, dword [esp + 0x18]
jae 0x460c00
mov ebx, dword [esp + 0x18]
sub ebx, eax
cmp edx, ebx
jg 0x460c00
mov ebp, edx
shr ebp, 0x1f
add ebp, edx
sar ebp, 1
test ebp, ebp
jbe 0x46129f
mov dword [esp + 0x10], edi
xor ebx, ebx
mov dword [esp + 0x14], edx
mov edi, dword [esp + 0x18]
movzx edx, byte [edi + ebx*2]
mov byte [eax + ebx*2], dl
movzx ecx, byte [edi + ebx*2 + 1]
mov byte [eax + ebx*2 + 1], cl
inc ebx
cmp ebx, ebp
jb 0x460bc5
mov edi, dword [esp + 0x10]
lea ebx, [ebx + ebx + 1]
mov edx, dword [esp + 0x14]
lea ebp, [ebx - 1]
cmp edx, ebp
jbe 0x460c7c
mov ebp, dword [esp + 0x18]
movzx edx, byte [ebp + ebx - 1]
mov byte [ebx + eax - 1], dl
jmp 0x460c7c
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
sar ebx, 1
mov dword [esp + 0x1c], ebx
test ebx, ebx
jbe 0x4612a9
mov ecx, dword [esp + 0x84]
xor ebp, ebp
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], edx
mov edi, dword [esp + 0x1c]
add ebx, ecx
sub ebx, dword [esp + 0x2c]
movzx ecx, byte [ebx + ebp*2]
mov byte [eax + ebp*2], cl
movzx edx, byte [ebx + ebp*2 + 1]
mov byte [eax + ebp*2 + 1], dl
inc ebp
cmp ebp, edi
jb 0x460c37
mov edi, dword [esp + 0x10]
lea ebx, [ebp + ebp + 1]
mov edx, dword [esp + 0x14]
lea ebp, [ebx - 1]
cmp edx, ebp
jbe 0x460c7c
mov edx, dword [esp + 0x84]
mov ebp, dword [esp + 0x88]
add edx, ebp
sub edx, dword [esp + 0x2c]
movzx edx, byte [ebx + edx - 1]
mov byte [ebx + eax - 1], dl
cmp dword [esp + 0x20], 0
je 0x460dae
jle 0x460dae
cmp dword [esp + 0x20], 6
jle 0x460d3c
mov edx, dword [esp + 0x2c]
lea ebx, [edx + eax]
mov dword [esp + 4], ebx
cmp ebx, dword [esp + 0x88]
jbe 0x460cbb
mov edx, ebx
sub edx, dword [esp + 0x88]
cmp edx, dword [esp + 0x20]
jge 0x460cd7
mov edx, ebx
cmp edx, dword [esp + 0x88]
jae 0x460d3c
mov edx, dword [esp + 0x88]
sub edx, dword [esp + 4]
cmp edx, dword [esp + 0x20]
jl 0x460d3c
mov eax, dword [esp + 0x20]
mov edx, eax
shr edx, 0x1f
add edx, eax
sar edx, 1
test edx, edx
jbe 0x4612b3
mov dword [esp + 0x10], edi
xor eax, eax
mov ebp, ebx
mov edi, dword [esp + 0x88]
movzx ecx, byte [edi + eax*2]
mov byte [ebp + eax*2], cl
movzx ebx, byte [edi + eax*2 + 1]
mov byte [ebp + eax*2 + 1], bl
inc eax
cmp eax, edx
jb 0x460cfb
mov edi, dword [esp + 0x10]
lea ebp, [eax + eax + 1]
lea eax, [ebp - 1]
cmp eax, dword [esp + 0x20]
jae 0x460dae
mov edx, dword [esp + 0x88]
mov ebx, dword [esp + 4]
movzx eax, byte [edx + ebp - 1]
mov byte [ebx + ebp - 1], al
jmp 0x460dae
mov edx, dword [esp + 0x20]
mov ebp, edx
shr ebp, 0x1f
add ebp, edx
sar ebp, 1
test ebp, ebp
jbe 0x4612d1
mov edx, dword [esp + 0x2c]
xor ebx, ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0xa8], eax
mov edi, dword [esp + 0x88]
add edx, eax
movzx eax, byte [edi + ebx*2]
mov byte [edx + ebx*2], al
movzx ecx, byte [edi + ebx*2 + 1]
mov byte [edx + ebx*2 + 1], cl
inc ebx
cmp ebx, ebp
jb 0x460d6b
mov edi, dword [esp + 0x10]
lea edx, [ebx + ebx + 1]
mov eax, dword [esp + 0xa8]
lea ebx, [edx - 1]
cmp ebx, dword [esp + 0x20]
jae 0x460dae
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 0x88]
add ebp, eax
movzx eax, byte [edx + ebx - 1]
mov byte [edx + ebp - 1], al
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0xe0]
cmp dword [esp + 0x28], 0
jne 0x460dc9
mov ebp, dword [esp + 0x50]
jmp 0x460fa1
mov edx, eax
add dword [esp + 0x24], eax
sub edx, ebx
mov dword [esp + 0xc], edx
cmp dword [esp + 0x28], 0
jle 0x460dc0
cmp dword [esp + 0x28], 6
jle 0x460e75
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0xc]
jbe 0x460dfb
sub eax, dword [esp + 0xc]
cmp eax, dword [esp + 0x28]
jge 0x460e11
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0xc]
jae 0x460e75
mov eax, edx
sub eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x28]
jl 0x460e75
mov eax, dword [esp + 0x28]
mov edx, eax
shr edx, 0x1f
add edx, eax
sar edx, 1
test edx, edx
jbe 0x4612bd
mov dword [esp + 0x10], edi
xor eax, eax
mov ebp, dword [esp + 0x24]
mov edi, dword [esp + 0xc]
movzx ecx, byte [edi + eax*2]
mov byte [ebp + eax*2], cl
movzx ebx, byte [edi + eax*2 + 1]
mov byte [ebp + eax*2 + 1], bl
inc eax
cmp eax, edx
jb 0x460e34
mov edi, dword [esp + 0x10]
lea ebp, [eax + eax + 1]
lea eax, [ebp - 1]
cmp eax, dword [esp + 0x28]
jae 0x460f92
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x24]
movzx eax, byte [edx + ebp - 1]
mov byte [ebx + ebp - 1], al
jmp 0x460f92
mov eax, dword [esp + 0x28]
mov edx, eax
shr edx, 0x1f
add edx, eax
sar edx, 1
test edx, edx
jbe 0x4612c7
mov dword [esp + 0x10], edi
xor eax, eax
mov ebp, dword [esp + 0x24]
mov edi, dword [esp + 0xc]
movzx ecx, byte [edi + eax*2]
mov byte [ebp + eax*2], cl
movzx ebx, byte [edi + eax*2 + 1]
mov byte [ebp + eax*2 + 1], bl
inc eax
cmp eax, edx
jb 0x460e98
mov edi, dword [esp + 0x10]
lea ebx, [eax + eax + 1]
lea eax, [ebx - 1]
cmp eax, dword [esp + 0x28]
jae 0x460f92
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 0x24]
movzx eax, byte [ebx + edx - 1]
mov byte [ebx + ebp - 1], al
jmp 0x460f92
mov edx, eax
sub edx, dword [esp + 0x48]
test edi, edi
jle 0x460fa1
cmp edi, 6
jle 0x460f4c
cmp eax, edx
jbe 0x460ef8
mov ebx, eax
sub ebx, edx
cmp edi, ebx
jle 0x460f04
cmp edx, eax
jbe 0x460f4c
mov ebx, edx
sub ebx, eax
cmp edi, ebx
jg 0x460f4c
mov ecx, edi
shr ecx, 0x1f
add ecx, edi
sar ecx, 1
test ecx, ecx
jbe 0x46142f
mov dword [esp + 0x10], edi
xor ebp, ebp
mov edi, ecx
movzx ebx, byte [edx + ebp*2]
mov byte [eax + ebp*2], bl
movzx ecx, byte [edx + ebp*2 + 1]
mov byte [eax + ebp*2 + 1], cl
inc ebp
cmp ebp, edi
jb 0x460f1d
mov edi, dword [esp + 0x10]
lea ebp, [ebp + ebp + 1]
lea ebx, [ebp - 1]
cmp edi, ebx
jbe 0x460f92
movzx edx, byte [edx + ebp - 1]
mov byte [ebp + eax - 1], dl
jmp 0x460f92
mov ecx, edi
shr ecx, 0x1f
add ecx, edi
sar ecx, 1
test ecx, ecx
jbe 0x46150d
mov dword [esp + 0x10], edi
xor ebp, ebp
mov edi, ecx
movzx ebx, byte [edx + ebp*2]
mov byte [eax + ebp*2], bl
movzx ecx, byte [edx + ebp*2 + 1]
mov byte [eax + ebp*2 + 1], cl
inc ebp
cmp ebp, edi
jb 0x460f65
mov edi, dword [esp + 0x10]
lea ebp, [ebp + ebp + 1]
lea ebx, [ebp - 1]
cmp edi, ebx
jbe 0x460f92
movzx edx, byte [ebp + edx - 1]
mov byte [ebp + eax - 1], dl
mov eax, dword [esp + 0x4c]
mov ebp, dword [esp + 0x50]
mov ebx, dword [esp + 0xe0]
add ebx, edi
add eax, edi
sub ebp, edi
mov dword [esp + 0xe0], ebx
cmp esi, 5
je 0x4614a3
mov dword [esp + 0x50], ebp
cmp esi, 1
mov dword [esp + 0x4c], eax
je 0x4609fd
test ebp, ebp
je 0x461439
mov edx, dword [esp + 0x44]
mov byte [eax], dl
mov ebp, dword [esp + 0x50]
dec ebp
inc dword [esp + 0x4c]
inc dword [esp + 0xe0]
mov dword [esp + 0x50], ebp
jmp 0x4609fd
mov ebp, dword [esp + 0x50]
mov esi, 4
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
cmp edx, edi
jg 0x461527
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x30], ecx
mov ecx, edx
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], ebp
mov ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
jmp 0x461050
mov dword [esp + 0x94], ecx
mov dword [esp + 0x90], ebx
test ebp, ebp
jle 0x461517
movzx edx, byte [eax]
inc eax
shl edx, cl
add ecx, 8
or ebx, edx
dec ebp
mov dword [esp + 0x98], eax
cmp ecx, edi
mov dword [esp + 0x9c], ebp
jle 0x461042
jmp 0x461517
mov ebp, dword [esp + 0x50]
mov esi, 3
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
cmp edx, dword [esp + 0x78]
jg 0x4615be
mov dword [esp + 0xa8], eax
mov eax, edx
mov ecx, dword [esp + 0x98]
mov edx, ecx
mov edi, dword [esp + 0x9c]
mov ecx, eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0xac], ebp
jmp 0x4610d6
mov dword [esp + 0x94], ecx
mov dword [esp + 0x90], ebx
test edi, edi
jle 0x4615ae
movzx ebp, byte [edx]
inc edx
shl ebp, cl
add ecx, 8
or ebx, ebp
dec edi
mov dword [esp + 0x98], edx
cmp ecx, eax
mov dword [esp + 0x9c], edi
jle 0x4610c8
jmp 0x4615ae
mov ebp, dword [esp + 0x50]
mov esi, 2
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
cmp edx, edi
jg 0x461624
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x38], ecx
mov ecx, edx
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], ebp
mov eax, dword [esp + 0x38]
mov ebp, dword [esp + 0x3c]
jmp 0x461162
mov dword [esp + 0x94], ecx
mov dword [esp + 0x90], ebx
test eax, eax
jle 0x461614
movzx edx, byte [ebp]
inc ebp
shl edx, cl
add ecx, 8
or ebx, edx
dec eax
mov dword [esp + 0x98], ebp
cmp ecx, edi
mov dword [esp + 0x9c], eax
jle 0x461154
jmp 0x461614
mov ebp, dword [esp + 0x50]
jmp 0x4609fd
mov edx, dword [esp + 0x94]
mov ebx, dword [esp + 0x90]
cmp edx, dword [esp + 0x7c]
jg 0x4616ad
mov eax, dword [esp + 0x98]
mov ecx, edx
mov edi, dword [esp + 0x7c]
jmp 0x4611cc
mov dword [esp + 0x94], ecx
mov dword [esp + 0x90], ebx
test esi, esi
jle 0x4616ab
movzx edx, byte [eax]
inc eax
shl edx, cl
add ecx, 8
or ebx, edx
dec esi
mov dword [esp + 0x98], eax
cmp ecx, edi
mov dword [esp + 0x9c], esi
jle 0x4611be
jmp 0x4616ab
mov esi, dword [esp + 0x54]
mov dword [esp + 0xa8], eax
mov edi, dword [esp + 0x9c]
mov eax, dword [esp + 0x44]
mov dword [esp + 0xac], ebp
mov dword [esp], edi
mov dword [esi + 4], eax
mov eax, dword [esp + 0x48]
mov edi, ebp
mov dword [esi], 5
mov dword [esi + 8], eax
mov dword [esi + 0xc], edi
mov esi, dword [esp + 0x58]
mov ecx, dword [esp + 0xa0]
mov ebp, dword [esp + 0xa4]
mov ebx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
mov dword [esi], 2
mov dword [esp + 4], 0
mov esi, dword [esp + 0x68]
mov eax, dword [esp + 0x98]
mov edi, dword [esp]
mov dword [esi], eax
mov eax, dword [esp + 0x64]
mov dword [eax], edi
mov dword [ebp], ebx
mov ebx, dword [esp + 0x60]
mov ebp, dword [esp + 0x5c]
mov eax, dword [esp + 4]
mov dword [ebx], edx
mov edx, dword [esp + 0xa8]
mov dword [ebp], edx
mov edx, dword [esp + 0xac]
mov dword [ecx], edx
add esp, 0xb0
pop ebp
pop ebx
pop edi
pop esi
ret
mov ebx, 1
jmp 0x460be6
mov ebx, 1
jmp 0x460c58
mov ebp, 1
jmp 0x460d19
mov ebp, 1
jmp 0x460e52
mov ebx, 1
jmp 0x460eb6
mov edx, 1
jmp 0x460d8f
cmp dword [esp + 0x24], 0
jle 0x460db9
cmp dword [esp + 0x24], 6
jle 0x461375
mov edx, dword [esp + 0x88]
sub edx, dword [esp + 0x2c]
mov dword [esp], edx
cmp eax, edx
jbe 0x46130e
mov edx, eax
sub edx, dword [esp]
cmp edx, dword [esp + 0x24]
jge 0x46131e
cmp eax, dword [esp]
jae 0x461375
mov edx, dword [esp]
sub edx, eax
cmp edx, dword [esp + 0x24]
jl 0x461375
mov edx, ecx
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
sar ebx, 1
test ebx, ebx
jbe 0x4613dd
mov dword [esp + 0x10], edi
xor ebp, ebp
mov edi, dword [esp]
movzx ecx, byte [edi + ebp*2]
mov byte [eax + ebp*2], cl
movzx edx, byte [edi + ebp*2 + 1]
mov byte [eax + ebp*2 + 1], dl
inc ebp
cmp ebp, ebx
jb 0x46133a
mov edi, dword [esp + 0x10]
lea ebp, [ebp + ebp + 1]
lea edx, [ebp - 1]
cmp edx, dword [esp + 0x24]
jae 0x460dae
mov ebx, dword [esp]
movzx edx, byte [ebx + ebp - 1]
mov byte [ebp + eax - 1], dl
jmp 0x460dae
mov ebx, ecx
mov edx, ebx
shr edx, 0x1f
add edx, ebx
sar edx, 1
test edx, edx
jbe 0x4613e7
mov ebp, dword [esp + 0x88]
xor ebx, ebx
sub ebp, dword [esp + 0x2c]
mov dword [esp + 0x10], edi
mov edi, edx
movzx ecx, byte [ebp + ebx*2]
mov byte [eax + ebx*2], cl
movzx edx, byte [ebp + ebx*2 + 1]
mov byte [eax + ebx*2 + 1], dl
inc ebx
cmp ebx, edi
jb 0x461397
mov edi, dword [esp + 0x10]
lea ebp, [ebx + ebx + 1]
lea edx, [ebp - 1]
cmp edx, dword [esp + 0x24]
jae 0x460dae
mov ebx, dword [esp + 0x2c]
neg ebx
add ebx, dword [esp + 0x88]
movzx edx, byte [ebp + ebx - 1]
mov byte [ebp + eax - 1], dl
jmp 0x460dae
mov ebp, 1
jmp 0x461357
mov ebp, 1
jmp 0x4613b5
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xac], ebp
mov ecx, dword [esp + 0xa0]
mov ebp, dword [esp + 0xa4]
mov ebx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
mov dword [esp], eax
mov dword [esp + 4], 0xffffff38
jmp 0x46125a
mov ebp, 1
jmp 0x460f3a
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x9c]
mov dword [esp], edi
mov edi, dword [esp + 0x54]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x44]
mov dword [edi], esi
mov esi, dword [esp + 0x48]
mov dword [edi + 8], esi
mov esi, dword [esp + 0x58]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xac], ebp
mov dword [edi + 0xc], eax
mov ecx, dword [esp + 0xa0]
mov ebp, dword [esp + 0xa4]
mov ebx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
mov dword [esi], 2
mov dword [esp + 4], 0
jmp 0x46125a
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x54]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x9c]
mov dword [edi], esi
mov esi, dword [esp + 0x48]
mov dword [edi + 8], esi
mov dword [esp], eax
mov esi, dword [esp + 0x58]
mov eax, dword [esp + 0x44]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xac], ebp
mov dword [edi + 0xc], eax
mov ecx, dword [esp + 0xa0]
mov ebp, dword [esp + 0xa4]
mov ebx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
mov dword [esi], 2
mov dword [esp + 4], 0
jmp 0x46125a
mov ebp, 1
jmp 0x460f82
mov eax, dword [esp + 0xa8]
mov edx, ecx
mov ebp, dword [esp + 0xac]
cmp edi, edx
jg 0x461552
movzx esi, word [edi*2 + 0x616d08]
mov ecx, edi
and esi, ebx
sub edx, edi
shr ebx, cl
add dword [esp + 0x48], esi
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], edx
jmp 0x460ad2
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x54]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x9c]
mov dword [edi], esi
mov esi, dword [esp + 0x48]
mov dword [edi + 8], esi
mov dword [esp], eax
mov esi, dword [esp + 0x58]
mov eax, dword [esp + 0x44]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xac], ebp
mov dword [edi + 0xc], eax
mov ecx, dword [esp + 0xa0]
mov ebp, dword [esp + 0xa4]
mov dword [esi], 2
mov dword [esp + 4], 0
jmp 0x46125a
mov eax, dword [esp + 0xa8]
mov edx, ecx
mov ebp, dword [esp + 0xac]
mov edi, ebx
and edi, dword [esp + 0x70]
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x40], esi
movzx esi, word [ecx + edi*2 + 0x400]
movzx edi, byte [edi + ecx]
mov ecx, edi
and ecx, 0xf
mov dword [esp + 0x48], esi
cmp edx, ecx
mov esi, dword [esp + 0x40]
jl 0x461552
shr edi, 4
sub edx, ecx
shr ebx, cl
mov dword [esp + 0x90], ebx
test edi, edi
mov dword [esp + 0x94], edx
je 0x460ad2
mov esi, 4
jmp 0x46100a
mov eax, dword [esp + 0xa8]
mov edx, ecx
mov ebp, dword [esp + 0xac]
cmp edi, edx
jg 0x461552
movzx esi, word [edi*2 + 0x616d08]
mov ecx, edi
and esi, ebx
sub edx, edi
shr ebx, cl
add dword [esp + 0x44], esi
mov esi, 3
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], edx
jmp 0x461096
mov edi, dword [esp + 0x58]
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x9c]
mov esi, dword [esp + 0x50]
mov dword [esp + 0xa8], edx
mov ecx, dword [esp + 0xa0]
mov ebp, dword [esp + 0xa4]
mov ebx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
mov dword [esp], eax
mov dword [esp + 0xac], esi
mov dword [edi], 0
mov dword [esp + 4], 0
jmp 0x46125a
mov edx, ecx
mov ecx, ebx
and ecx, dword [esp + 0x74]
mov edi, dword [esp + 0x80]
movzx eax, byte [edi + ecx*2 + 1]
movzx edi, byte [edi + ecx*2]
mov ecx, edi
and ecx, 0xf
mov dword [esp + 0x44], eax
cmp edx, ecx
jl 0x461773
shr ebx, cl
sub edx, ecx
and edi, 0xf0
jne 0x4616fc
mov dword [esp + 0x94], edx
mov esi, 6
mov dword [esp + 0x90], ebx
mov eax, dword [esp + 0x4c]
jmp 0x460fc8
cmp edi, 0xf0
jne 0x46173e
mov dword [esp], esi
mov esi, dword [esp + 0x58]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xac], ebp
mov ecx, dword [esp + 0xa0]
mov ebp, dword [esp + 0xa4]
mov dword [esp + 0xa8], eax
mov dword [esi], 0
mov dword [esp + 4], 0
jmp 0x46125a
shr edi, 4
add eax, 3
mov dword [esp + 0x44], eax
and edi, 7
mov dword [esp + 0x94], edx
mov dword [esp + 0x90], ebx
mov eax, dword [esp + 0x4c]
je 0x461769
mov esi, 2
jmp 0x46111c
mov esi, 3
jmp 0x461096
mov dword [esp], esi
mov esi, dword [esp + 0x58]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xac], ebp
mov ecx, dword [esp + 0xa0]
mov ebp, dword [esp + 0xa4]
mov dword [esp + 0xa8], eax
mov dword [esi], 1
mov dword [esp + 4], 0
jmp 0x46125a
mov edi, dword [esp + 0x54]
mov eax, dword [edi + 4]
mov dword [esp + 0x44], eax
mov esi, dword [edi]
cmp esi, 1
mov eax, dword [edi + 8]
mov edi, dword [edi + 0xc]
mov dword [esp + 0x48], eax
mov dword [esp + 0x10], edi
je 0x4609e8
cmp esi, 6
je 0x4617ee
cmp esi, 2
je 0x461872
cmp esi, 3
je 0x461851
cmp esi, 4
je 0x461830
cmp esi, 5
je 0x46180f
mov dword [esp + 0xa4], ebp
mov dword [esp + 0xa0], ecx
mov eax, dword [esp + 0xa8]
mov ebp, dword [esp + 0xac]
jmp 0x460fc8
mov dword [esp + 0xa4], ebp
mov dword [esp + 0xa0], ecx
mov eax, dword [esp + 0xa8]
mov ebp, dword [esp + 0xac]
jmp 0x460ad2
mov dword [esp + 0xa4], ebp
mov dword [esp + 0xa0], ecx
mov eax, dword [esp + 0xa8]
mov ebp, dword [esp + 0xac]
jmp 0x46100a
mov dword [esp + 0xa4], ebp
mov dword [esp + 0xa0], ecx
mov eax, dword [esp + 0xa8]
mov ebp, dword [esp + 0xac]
jmp 0x461096
mov dword [esp + 0xa4], ebp
mov dword [esp + 0xa0], ecx
mov eax, dword [esp + 0xa8]
mov ebp, dword [esp + 0xac]
jmp 0x46111c
mov eax, 0xffffff38
add esp, 0xb0
pop ebp
pop ebx
pop edi
pop esi
ret