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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xac
mov eax, dword [esp + 0xd0]
mov edx, dword [esp + 0xd4]
mov ecx, dword [esp + 0xd8]
mov esi, dword [esp + 0xdc]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xe0]
mov edi, dword [esp + 0xe4]
mov ebp, dword [esp + 0xe8]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xec]
fnstcw word [esp + 0x5e]
mov ebx, esi
mov dword [esp + 0x9c], eax
shr ebx, 0x10
mov dword [esp + 0x98], ebp
and ebx, 0x7fff
mov dword [esp + 0x94], edi
mov dword [esp + 0x1c], ebx
mov ebx, esi
movzx esi, si
shr ebx, 0x1f
shl esi, 3
mov byte [esp + 0x3b], bl
movzx ebx, bl
mov dword [esp + 0x30], ebx
mov ebx, ecx
shl ecx, 3
shr ebx, 0x1d
or ebx, esi
mov esi, edx
shl edx, 3
shr esi, 0x1d
mov dword [esp + 0x6c], ebx
or esi, ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x28], esi
mov dword [esp + 0x68], esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x90], ecx
mov ecx, ebp
shl ebp, 3
shr esi, 0x1d
shr ecx, 0x1d
or edx, esi
mov dword [esp + 0x64], edx
mov esi, edx
mov edx, dword [esp + 0x24]
shl edx, 3
mov dword [esp + 0x44], edx
mov dword [esp + 0x60], edx
mov edx, eax
shr edx, 0x10
and edx, 0x7fff
mov dword [esp + 0x20], edx
mov edx, eax
movzx eax, ax
shl eax, 3
shr edx, 0x1f
or ecx, eax
mov eax, edi
shl edi, 3
mov dword [esp + 0x34], ecx
shr eax, 0x1d
mov dword [esp + 0x7c], ecx
mov ecx, dword [esp + 0x2c]
or eax, ebp
mov dword [esp + 0x40], eax
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x78], eax
mov eax, ecx
shr eax, 0x1d
or edi, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x3c], edi
mov dword [esp + 0x74], edi
lea edi, [ecx*8]
sub ebp, eax
mov dword [esp + 0x70], edi
cmp eax, 0x7fff
je 0x644dc588
xor edx, 1
movzx eax, dl
mov dword [esp + 0x48], eax
cmp dword [esp + 0x30], eax
je 0x644dc6a0
test ebp, ebp
jle 0x644dc4d0
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x644dc5b5
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x40]
or eax, dword [esp + 0x34]
or eax, edi
je 0x644dd020
mov eax, ebp
sub eax, 1
je 0x644dd860
cmp ebp, 0x7fff
je 0x644dd8d0
cmp eax, 0x74
jle 0x644dcf55
mov dword [esp + 0x24], 2
jmp 0x644dc5e1
test ebp, ebp
je 0x644dc870
movzx eax, byte [esp + 0x48]
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
and eax, 1
mov byte [esp + 0x3b], al
sub ebp, ecx
test ecx, ecx
jne 0x644dd230
mov eax, dword [esp + 0x28]
or eax, esi
or eax, ebx
or eax, dword [esp + 0x44]
je 0x644dd6a1
mov eax, ebp
sub eax, 1
je 0x644dde15
cmp ebp, 0x7fff
je 0x644ddf49
cmp eax, 0x74
jle 0x644ddfac
mov dword [esp + 0x24], 2
mov dword [esp + 0x1c], 1
xor esi, esi
xor ebx, ebx
xor edx, edx
mov ecx, dword [esp + 0x34]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
sub edi, dword [esp + 0x1c]
sbb eax, esi
sbb ebp, ebx
sbb ecx, edx
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x88], ebp
mov dword [esp + 0x80], edi
mov dword [esp + 0x30], eax
jmp 0x644dc627
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x40]
or eax, dword [esp + 0x34]
or eax, edi
je 0x644dc462
movzx eax, dl
mov dword [esp + 0x48], eax
cmp dword [esp + 0x30], eax
je 0x644dcd50
test ebp, ebp
jle 0x644dc4d0
cmp dword [esp + 0x1c], 0x7fff
je 0x644dd318
mov eax, dword [esp + 0x34]
mov dword [esp + 0x24], 0
or eax, 0x80000
mov dword [esp + 0x7c], eax
cmp ebp, 0x74
jle 0x644dcf5f
mov dword [esp + 0x20], 1
xor ebp, ebp
xor edi, edi
mov dword [esp + 0x2c], 0
mov ecx, dword [esp + 0x28]
mov edx, esi
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x20]
sbb edx, ebp
sbb ecx, edi
sbb ebx, dword [esp + 0x2c]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], edx
mov dword [esp + 0x80], eax
mov ebx, dword [esp + 0x8c]
mov eax, ebx
test ebx, 0x80000
je 0x644dca68
and eax, 0x7ffff
mov dword [esp + 0x8c], eax
test eax, eax
je 0x644dcf38
bsr eax, eax
xor eax, 0x1f
lea edx, [eax + 0x13]
sub eax, 0xc
mov ebp, eax
mov eax, edx
cmovns eax, ebp
sar eax, 5
test ebp, 0x1f
jne 0x644dd088
mov ecx, eax
lea edx, [esp + 0x80]
lea ebx, [esp + 0x70]
neg ecx
lea ecx, [edx + ecx*4]
mov esi, dword [ecx + 0xc]
mov dword [ecx + eax*4 + 0xc], esi
sub ecx, 4
cmp ecx, ebx
jne 0x644dc684
jmp 0x644dc7f7
test ebp, ebp
jle 0x644dcd50
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x644dc960
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x40]
or eax, dword [esp + 0x34]
or eax, edi
je 0x644dd020
mov eax, ebp
sub eax, 1
je 0x644dd6f0
cmp ebp, 0x7fff
je 0x644dd8d0
cmp eax, 0x74
jle 0x644dde56
mov dword [esp + 0x24], 2
mov dword [esp + 0x20], 1
xor ebp, ebp
xor edi, edi
mov dword [esp + 0x2c], 0
mov ecx, dword [esp + 0x28]
mov edx, esi
mov eax, dword [esp + 0x44]
add eax, dword [esp + 0x20]
adc edx, ebp
adc ecx, edi
adc ebx, dword [esp + 0x2c]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], edx
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x80]
mov ebx, eax
mov edi, edx
test eax, 0x80000
je 0x644dca6f
add dword [esp + 0x1c], 1
and eax, 0xfff7ffff
shl edx, 0x1f
mov ecx, edi
mov dword [esp + 0x8c], eax
lea ebx, [esp + 0x8c]
lea eax, [esp + 0x80]
mov edi, dword [eax + 4]
shr ecx, 1
add eax, 4
shl edi, 0x1f
or edi, ecx
mov dword [eax - 4], edi
cmp ebx, eax
je 0x644dd7b0
mov ecx, dword [eax]
jmp 0x644dc777
mov eax, dword [esp + 0x84]
test eax, eax
jne 0x644dd55a
bsr eax, dword [esp + 0x80]
xor eax, 0x1f
lea ebp, [eax + 0x54]
mov eax, ebp
mov ecx, ebp
sar eax, 5
and ecx, 0x1f
je 0x644dc672
mov dword [esp + 0x20], ecx
cmp ebp, 0x5f
jle 0x644dd09d
mov eax, dword [esp + 0x80]
lea edx, [esp + 0x80]
shl eax, cl
mov dword [esp + 0x8c], eax
mov eax, 2
nop
mov dword [edx + eax*4], 0
sub eax, 1
cmp eax, 0xffffffff
jne 0x644dc7f0
cmp dword [esp + 0x1c], ebp
jg 0x644dca50
mov ebx, ebp
sub ebx, dword [esp + 0x1c]
lea eax, [ebx + 0x20]
add ebx, 1
cmovns eax, ebx
xor ebp, ebp
xor ecx, ecx
sar eax, 5
cmp ebx, 0x1f
jle 0x644dc838
or ebp, dword [edx + ecx*4]
add ecx, 1
cmp eax, ecx
jg 0x644dc824
test eax, eax
mov ecx, 1
cmovg ecx, eax
mov esi, 3
mov edi, esi
sub edi, eax
test bl, 0x1f
jne 0x644dd390
lea ebx, [edx + eax*4]
xor ecx, ecx
mov esi, dword [ebx + ecx*4]
mov dword [edx + ecx*4], esi
add ecx, 1
cmp ecx, edi
jle 0x644dc84f
mov ecx, 4
sub ecx, eax
mov eax, ecx
jmp 0x644dd41d
mov ebp, dword [esp + 0x1c]
lea eax, [ebp + 1]
and eax, 0x7ffe
mov dword [esp + 0x4c], eax
jne 0x644dd1b0
mov eax, dword [esp + 0x28]
or eax, ebx
or eax, esi
or eax, dword [esp + 0x44]
mov edx, eax
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x40]
or eax, dword [esp + 0x34]
or eax, edi
mov ecx, eax
test ebp, ebp
jne 0x644dd625
test edx, edx
je 0x644dddc4
test eax, eax
je 0x644dda4b
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x44]
mov edx, esi
sub eax, edi
sbb edx, dword [esp + 0x3c]
sbb ecx, dword [esp + 0x40]
sbb ebx, dword [esp + 0x34]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], edx
mov dword [esp + 0x80], eax
test ebx, 0x80000
je 0x644dcc5a
mov ebx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x24], 2
mov edx, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
sub edi, dword [esp + 0x60]
sbb edx, dword [esp + 0x64]
sbb ecx, dword [esp + 0x68]
sbb ebx, dword [esp + 0x6c]
mov dword [esp + 0x88], ecx
mov esi, edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x8c], ebx
mov eax, ecx
mov dword [esp + 0x84], edx
and eax, 1
mov dword [esp + 0x80], edi
mov byte [esp + 0x3b], al
mov eax, ebx
mov dword [esp + 0x30], ecx
jmp 0x644dca94
cmp dword [esp + 0x1c], 0x7fff
je 0x644dd318
mov eax, dword [esp + 0x34]
mov dword [esp + 0x24], 0
or eax, 0x80000
mov dword [esp + 0x7c], eax
cmp ebp, 0x74
jg 0x644dc6f0
mov ecx, ebp
sar ecx, 5
mov dword [esp + 0x2c], ecx
je 0x644dd757
lea edx, [esp + 0x70]
mov eax, edx
mov dword [esp + 0x20], edx
lea edx, [edx + ecx*4]
xor ecx, ecx
add eax, 4
or ecx, edi
cmp edx, eax
je 0x644dc9be
mov edi, dword [eax]
add eax, 4
or ecx, edi
cmp edx, eax
jne 0x644dc9b3
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x2c]
mov eax, 3
sub eax, ecx
mov edi, eax
and ebp, 0x1f
jne 0x644dd9bc
mov ebp, dword [esp + 0x20]
xor eax, eax
lea edx, [ebp + ecx*4]
mov ecx, dword [edx + eax*4]
mov dword [ebp + eax*4], ecx
add eax, 1
cmp eax, edi
jle 0x644dc9e6
mov eax, 4
sub eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
cmp eax, 4
je 0x644dca1f
lea esi, [esi]
lea esi, [esi]
mov dword [edx + eax*4], 0
add eax, 1
cmp eax, 4
jne 0x644dca10
mov edi, dword [esp + 0x34]
xor eax, eax
mov ebp, dword [esp + 0x74]
test edi, edi
mov edi, dword [esp + 0x78]
setne al
or eax, dword [esp + 0x70]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x2c], eax
jmp 0x644dc704
mov ebx, dword [esp + 0x8c]
sub dword [esp + 0x1c], ebp
and ebx, 0xfff7ffff
mov dword [esp + 0x8c], ebx
mov edi, dword [esp + 0x80]
mov ebp, dword [esp + 0x1c]
test ebp, ebp
jne 0x644dcdb0
mov eax, dword [esp + 0x88]
mov esi, dword [esp + 0x84]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x8c]
mov edx, edi
or edx, esi
or edx, dword [esp + 0x28]
or edx, ebx
je 0x644dcc90
mov ebp, dword [esp + 0x28]
lea ecx, [ebx + ebx]
mov edx, ebp
shr edx, 0x1f
mov ebx, edx
mov edx, ebp
or ebx, ecx
mov ecx, esi
add edx, edx
add esi, esi
shr ecx, 0x1f
or ecx, edx
mov edx, edi
add edi, edi
shr edx, 0x1f
or edx, esi
test edi, 6
je 0x644dcb00
movzx esi, word [esp + 0x5e]
or dword [esp + 0x24], 0x20
and si, 0xc00
cmp si, 0x400
je 0x644dd975
cmp si, 0x800
je 0x644dd958
test si, si
je 0x644dd988
mov edi, dword [esp + 0x80]
mov esi, ebx
mov ebx, eax
and esi, 0x100000
mov edx, edi
test edi, 7
jne 0x644dce48
mov ecx, eax
and ecx, 0x80000
test esi, esi
jne 0x644dcb47
mov edi, dword [esp + 0x24]
and edi, 0x20
mov dword [esp + 0x1c], edi
jne 0x644dcc10
test byte [esp + 0x5e], 0x10
je 0x644dcc20
test ecx, ecx
je 0x644dd921
and eax, 0xfff7ffff
mov dword [esp + 0x1c], 1
mov dword [esp + 0x8c], eax
movzx edi, word [esp + 0x1c]
mov esi, dword [esp + 0x84]
mov ebp, edx
mov eax, dword [esp + 0x8c]
and di, 0x7fff
mov ecx, esi
shl ecx, 0x1d
shr ebp, 3
mov ebx, eax
shr esi, 3
or ebp, ecx
mov ecx, dword [esp + 0x88]
shl ebx, 0x1d
shr eax, 3
mov edx, ecx
shr ecx, 3
shl edx, 0x1d
or ebx, ecx
or esi, edx
cmp dword [esp + 0x1c], 0x7fff
jne 0x644dcbc4
mov edx, ebp
mov ecx, eax
or edx, esi
or ch, 0x80
or edx, ebx
or edx, eax
mov eax, 0
cmovne eax, ecx
mov word [esp + 0x9c], ax
movzx eax, byte [esp + 0x3b]
mov edx, dword [esp + 0x24]
shl eax, 0xf
or edi, eax
mov word [esp + 0x9e], di
mov edi, dword [esp + 0x9c]
test edx, edx
jne 0x644dd070
mov eax, dword [esp + 0xc0]
mov dword [eax], ebp
mov dword [eax + 4], esi
mov dword [eax + 8], ebx
mov dword [eax + 0xc], edi
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov dword [esp + 0x1c], 0
lea esi, [esi]
nop
or dword [esp + 0x24], 0x10
test ecx, ecx
je 0x644dccc0
add dword [esp + 0x1c], 1
mov eax, dword [esp + 0x1c]
and ebx, 0xfff7ffff
mov dword [esp + 0x8c], ebx
cmp eax, 0x7fff
je 0x644dccd0
mov edx, dword [esp + 0x80]
jmp 0x644dcb63
mov edi, eax
mov eax, ebx
mov dword [esp + 0x28], ecx
mov esi, edx
or eax, edi
or eax, edx
or eax, ecx
jne 0x644dda6f
movzx eax, word [esp + 0x5e]
mov dword [esp + 0x24], 2
and ax, 0xc00
cmp ax, 0x400
mov eax, ebx
sete byte [esp + 0x3b]
lea esi, [esi]
mov dword [esp + 0x1c], 0
mov edx, dword [esp + 0x80]
movzx edi, word [esp + 0x1c]
mov esi, dword [esp + 0x84]
mov ebp, edx
and di, 0x7fff
mov ecx, esi
jmp 0x644dcb7f
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x8c]
jmp 0x644dcc9f
movzx eax, word [esp + 0x5e]
and ax, 0xc00
je 0x644dcf08
cmp ax, 0x800
je 0x644dcef9
cmp ax, 0x400
jne 0x644dccfa
test byte [esp + 0x30], 1
jne 0x644dcf08
mov dword [esp + 0x8c], 0xffffffff
mov ebp, 0xffffffff
mov edi, 0x7ffe
mov dword [esp + 0x88], 0xffffffff
mov dword [esp + 0x84], 0xffffffff
mov dword [esp + 0x1c], 0x7ffe
or dword [esp + 0x24], 0x28
mov esi, dword [esp + 0x84]
mov ecx, ebp
mov eax, dword [esp + 0x8c]
jmp 0x644dcb7f
test ebp, ebp
je 0x644dd110
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
sub ebp, eax
test eax, eax
jne 0x644dd4e4
mov eax, dword [esp + 0x28]
or eax, esi
or eax, ebx
or eax, dword [esp + 0x44]
je 0x644ddec1
mov eax, ebp
sub eax, 1
je 0x644de0e1
cmp ebp, 0x7fff
je 0x644de4c0
cmp eax, 0x74
jle 0x644ddb0d
mov dword [esp + 0x24], 2
jmp 0x644dd50d
mov edx, edi
and edx, 7
test edx, edx
je 0x644de68b
or dword [esp + 0x24], 0x20
movzx eax, word [esp + 0x5e]
and ax, 0xc00
xor ebp, ebp
cmp ax, 0x400
je 0x644dce90
cmp ax, 0x800
jne 0x644dce30
mov esi, dword [esp + 0x30]
test esi, esi
jne 0x644dce1b
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x84]
add edi, 8
adc eax, 0
adc edx, 0
adc ebx, 0
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], edx
mov dword [esp + 0x84], eax
mov dword [esp + 0x80], edi
mov ecx, ebx
and ecx, 0x80000
test ebp, ebp
jne 0x644dcc20
jmp 0x644dcc25
test ax, ax
je 0x644dceb0
mov ecx, ebx
and ecx, 0x80000
jmp 0x644dcc25
xor ecx, ecx
test esi, esi
sete cl
or dword [esp + 0x24], 0x20
mov ebp, ecx
movzx ecx, word [esp + 0x5e]
and cx, 0xc00
cmp cx, 0x800
je 0x644de67e
ja 0x644dd370
test cx, cx
je 0x644dcea1
cmp cx, 0x400
jne 0x644dd370
mov dword [esp + 0x1c], 0
lea esi, [esi]
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x644dce1b
jmp 0x644dcde5
mov dword [esp + 0x1c], 0
lea esi, [esi]
mov eax, edi
and eax, 0xf
cmp eax, 4
je 0x644dce1b
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x84]
add edi, 4
adc eax, 0
adc edx, 0
adc ebx, 0
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], edx
mov dword [esp + 0x84], eax
mov dword [esp + 0x80], edi
jmp 0x644dce1b
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x644dccfa
lea esi, [esi]
mov dword [esp + 0x8c], 0
xor ebp, ebp
mov edi, 0x7fff
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
jmp 0x644dcd2d
mov eax, dword [esp + 0x88]
test eax, eax
je 0x644dc798
bsr eax, eax
xor eax, 0x1f
add eax, 0x20
jmp 0x644dc656
mov dword [esp + 0x24], 2
mov ebp, eax
mov eax, ebp
xor edx, edx
sar eax, 5
je 0x644dda36
lea ecx, [esp + 0x70]
add edx, 1
mov dword [esp + 0x20], ecx
xor ecx, ecx
or ecx, edi
cmp eax, edx
je 0x644dcf8f
mov edi, dword [esp + 0x20]
mov edi, dword [edi + edx*4]
add edx, 1
or ecx, edi
cmp eax, edx
jne 0x644dcf7f
mov dword [esp + 0x2c], ecx
mov edx, eax
mov ecx, 3
mov edi, ecx
sub edi, eax
and ebp, 0x1f
jne 0x644dd470
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x34], eax
xor edx, edx
lea ecx, [ebp + eax*4]
mov eax, dword [ecx + edx*4]
mov dword [ebp + edx*4], eax
add edx, 1
cmp edx, edi
jle 0x644dcfb5
mov eax, dword [esp + 0x34]
mov edx, 4
sub edx, eax
mov eax, edx
mov edx, dword [esp + 0x20]
cmp eax, 4
je 0x644dcfef
lea esi, [esi]
mov dword [edx + eax*4], 0
add eax, 1
cmp eax, 4
jne 0x644dcfe0
mov edi, dword [esp + 0x2c]
xor eax, eax
mov ebp, dword [esp + 0x74]
test edi, edi
mov edi, dword [esp + 0x78]
setne al
or eax, dword [esp + 0x70]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x2c], eax
jmp 0x644dc5f5
cmp ebp, 0x7fff
je 0x644dd92e
mov eax, dword [esp + 0x44]
mov dword [esp + 0x84], esi
mov dword [esp + 0x8c], ebx
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov dword [esp + 0x1c], ebp
and ecx, 0x80000
mov dword [esp + 0x24], eax
jmp 0x644dcc25
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.644d6e20
jmp 0x644dcbf1
mov edx, ebp
sar edx, 0x1f
shr edx, 0x1b
lea ecx, [ebp + edx]
and ecx, 0x1f
sub ecx, edx
mov dword [esp + 0x20], ecx
mov edx, 0x20
mov ecx, eax
sub edx, dword [esp + 0x20]
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x28], edx
neg ecx
lea edx, [esp + 0x80]
mov ebx, 3
lea edi, [edx + ecx*4]
mov esi, dword [edi + ebx*4]
movzx ecx, byte [esp + 0x20]
mov ebp, dword [edi + ebx*4 - 4]
shl esi, cl
movzx ecx, byte [esp + 0x28]
shr ebp, cl
or esi, ebp
mov dword [edx + ebx*4], esi
sub ebx, 1
cmp eax, ebx
jl 0x644dd0c1
cmp eax, 2
mov edi, dword [esp + 0x80]
movzx ecx, byte [esp + 0x20]
mov ebx, 2
cmovle ebx, eax
mov ebp, dword [esp + 0x2c]
shl edi, cl
mov dword [esp + ebx*4 + 0x80], edi
lea eax, [ebx - 1]
jmp 0x644dc7fa
mov ecx, dword [esp + 0x1c]
lea eax, [ecx + 1]
mov ebp, eax
and ebp, 0x7ffe
jne 0x644dd568
mov eax, dword [esp + 0x28]
or eax, ebx
or eax, esi
or eax, dword [esp + 0x44]
mov edx, eax
test ecx, ecx
jne 0x644ddc61
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x40]
or eax, edi
or eax, dword [esp + 0x34]
test edx, edx
je 0x644ddf08
test eax, eax
je 0x644dda4b
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x44]
mov edx, esi
add eax, edi
adc edx, dword [esp + 0x3c]
adc ecx, dword [esp + 0x40]
adc ebx, dword [esp + 0x34]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], edx
mov dword [esp + 0x80], eax
test ebx, 0x80000
jne 0x644de452
mov edi, eax
mov dword [esp + 0x28], ecx
mov esi, edx
mov eax, ebx
mov dword [esp + 0x24], 2
jmp 0x644dca94
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x44]
mov edx, esi
sub eax, edi
sbb edx, dword [esp + 0x3c]
sbb ecx, dword [esp + 0x40]
sbb ebx, dword [esp + 0x34]
mov dword [esp + 0x80], eax
mov eax, ebx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], edx
test eax, 0x80000
jne 0x644dd5cb
mov edx, dword [esp + 0x80]
or edx, ebx
or edx, dword [esp + 0x84]
or edx, dword [esp + 0x88]
jne 0x644ddacb
movzx eax, word [esp + 0x5e]
mov dword [esp + 0x24], 0
and ax, 0xc00
cmp ax, 0x400
mov eax, ebx
sete byte [esp + 0x3b]
jmp 0x644dcc90
cmp dword [esp + 0x20], 0x7fff
je 0x644dde65
or ebx, 0x80000
mov dword [esp + 0x24], 0
mov dword [esp + 0x6c], ebx
cmp ebp, 0x74
jg 0x644dc530
test ebp, ebp
lea eax, [ebp + 0x1f]
cmovns eax, ebp
sar eax, 5
cmp ebp, 0x1f
jle 0x644de047
mov ebx, dword [esp + 0x44]
xor edx, edx
xor ecx, ecx
lea esi, [esp + 0x60]
add edx, 1
or ecx, ebx
cmp eax, edx
jle 0x644dd28e
mov ebx, dword [esi + edx*4]
add edx, 1
or ecx, ebx
cmp eax, edx
jg 0x644dd282
mov edx, 1
mov dword [esp + 0x28], ecx
test eax, eax
mov ecx, edx
cmovg ecx, eax
mov edx, 3
mov ebx, edx
sub ebx, eax
mov dword [esp + 0x2c], ebx
test ebp, 0x1f
jne 0x644ddbd3
lea ecx, [esi + eax*4]
xor edx, edx
mov ebp, ebx
mov ebx, dword [ecx + edx*4]
mov dword [esi + edx*4], ebx
add edx, 1
cmp edx, ebp
jle 0x644dd2be
mov edx, 4
sub edx, eax
mov eax, edx
cmp eax, 3
jg 0x644dd2ef
lea esi, [esi]
mov dword [esi + eax*4], 0
add eax, 1
cmp eax, 4
jne 0x644dd2e0
mov edx, dword [esp + 0x28]
xor eax, eax
mov ebx, dword [esp + 0x68]
mov esi, dword [esp + 0x64]
test edx, edx
mov edx, dword [esp + 0x6c]
setne al
or eax, dword [esp + 0x60]
mov dword [esp + 0x1c], eax
jmp 0x644dc53e
mov eax, dword [esp + 0x28]
mov dword [esp + 0x20], 0
or eax, ebx
or eax, esi
or eax, dword [esp + 0x44]
je 0x644dd33d
mov edx, ebx
shr edx, 0x12
xor edx, 1
and edx, 1
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x44]
mov dword [esp + 0x84], esi
mov ebp, 0x7fff
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x88], eax
jmp 0x644dd057
mov ecx, eax
mov dword [esp + 0x1c], 0
and ecx, 0x80000
test esi, esi
je 0x644dcc20
jmp 0x644dcb47
mov esi, ebx
sar esi, 0x1f
shr esi, 0x1b
add ebx, esi
and ebx, 0x1f
sub ebx, esi
mov esi, ebx
mov dword [esp + 0x1c], ebx
mov ebx, 0x20
sub ebx, esi
mov esi, ebx
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + ecx*4 + 0x80]
mov ecx, esi
shl ebx, cl
or ebp, ebx
test edi, edi
je 0x644dd788
mov dword [esp + 0x28], edi
lea esi, [edx + edi*4]
mov ebx, edx
mov dword [esp + 0x2c], edx
mov edx, esi
mov esi, dword [ebx + eax*4]
movzx ecx, byte [esp + 0x1c]
mov edi, dword [ebx + eax*4 + 4]
add ebx, 4
shr esi, cl
movzx ecx, byte [esp + 0x20]
shl edi, cl
or esi, edi
mov dword [ebx - 4], esi
cmp edx, ebx
jne 0x644dd3d6
mov ecx, 4
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 0x28]
sub ecx, eax
mov edx, dword [esp + 0x2c]
mov eax, ecx
movzx ecx, byte [esp + 0x1c]
shr esi, cl
mov dword [esp + edi*4 + 0x80], esi
cmp eax, 3
jg 0x644dd437
lea esi, [esi]
mov dword [edx + eax*4], 0
add eax, 1
cmp eax, 4
jne 0x644dd428
xor eax, eax
test ebp, ebp
mov esi, dword [esp + 0x84]
setne al
or eax, dword [esp + 0x80]
mov dword [esp + 0x80], eax
mov edi, eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x8c]
mov ebx, eax
jmp 0x644dca94
mov edx, dword [esp + edx*4 + 0x70]
mov ecx, 0x20
sub ecx, ebp
shl edx, cl
mov dword [esp + 0x34], ecx
or dword [esp + 0x2c], edx
test edi, edi
je 0x644dd76e
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x40], esi
mov dword [esp + 0x48], ebx
mov edx, ecx
lea ecx, [ecx + edi*4]
mov dword [esp + 0x3c], ecx
mov esi, dword [edx + eax*4]
mov ecx, ebp
mov ebx, dword [edx + eax*4 + 4]
add edx, 4
shr esi, cl
movzx ecx, byte [esp + 0x34]
shl ebx, cl
or esi, ebx
mov dword [edx - 4], esi
cmp edx, dword [esp + 0x3c]
jne 0x644dd4a2
mov edx, 4
mov ecx, ebp
mov esi, dword [esp + 0x40]
mov ebx, dword [esp + 0x48]
sub edx, eax
mov eax, edx
mov edx, dword [esp + 0x7c]
shr edx, cl
mov dword [esp + edi*4 + 0x70], edx
jmp 0x644dcfd0
cmp dword [esp + 0x20], 0x7fff
je 0x644de323
or ebx, 0x80000
mov dword [esp + 0x24], 0
mov dword [esp + 0x6c], ebx
cmp ebp, 0x74
jle 0x644ddb17
mov dword [esp + 0x1c], 1
xor ebx, ebx
xor edx, edx
xor esi, esi
mov ecx, dword [esp + 0x34]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
add edi, dword [esp + 0x1c]
adc eax, ebx
adc ebp, edx
adc ecx, esi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x88], ebp
mov dword [esp + 0x80], edi
mov dword [esp + 0x1c], eax
jmp 0x644dc736
bsr eax, eax
xor eax, 0x1f
add eax, 0x40
jmp 0x644dc656
mov edx, esi
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x44]
add esi, edi
adc edx, dword [esp + 0x3c]
adc ecx, dword [esp + 0x40]
adc ebx, dword [esp + 0x34]
mov dword [esp + 0x8c], ebx
mov ebp, esi
lea edi, [esp + 0x8c]
mov dword [esp + 0x84], edx
shl ebp, 0x1f
mov dword [esp + 0x80], esi
mov dword [esp + 0x88], ecx
lea ecx, [esp + 0x80]
mov edx, dword [ecx + 4]
shr esi, 1
add ecx, 4
shl edx, 0x1f
or edx, esi
mov dword [ecx - 4], edx
cmp ecx, edi
je 0x644dda83
mov esi, dword [ecx]
jmp 0x644dd5af
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x24], 0
mov ebx, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
mov dword [esp + 0x30], edi
sub edx, dword [esp + 0x60]
sbb ecx, dword [esp + 0x64]
sbb ebx, dword [esp + 0x68]
sbb eax, dword [esp + 0x6c]
mov dword [esp + 0x88], ebx
mov ebx, edi
and ebx, 1
mov dword [esp + 0x8c], eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x80], edx
mov byte [esp + 0x3b], bl
jmp 0x644dc648
cmp dword [esp + 0x1c], 0x7fff
je 0x644de11a
cmp dword [esp + 0x20], 0x7fff
je 0x644de410
test edx, edx
jne 0x644de13f
test ecx, ecx
jne 0x644de3c5
mov dword [esp + 0x8c], 0x40000
mov ebx, 0x40000
mov ebp, 0x7fff
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x80], 0
mov byte [esp + 0x3b], 1
mov dword [esp + 0x30], 1
mov dword [esp + 0x20], 1
jmp 0x644dd057
cmp ebp, 0x7fff
je 0x644de26c
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x8c], eax
mov ebx, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x24], eax
jmp 0x644dca6f
mov ecx, dword [esp + 0x28]
mov edx, esi
mov eax, dword [esp + 0x44]
add eax, edi
adc edx, dword [esp + 0x3c]
adc ecx, dword [esp + 0x40]
adc ebx, dword [esp + 0x34]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], edx
mov dword [esp + 0x80], eax
mov ebx, dword [esp + 0x8c]
mov edi, dword [esp + 0x80]
mov eax, ebx
mov edx, edi
test ebx, 0x80000
je 0x644dd8b2
mov dword [esp + 0x1c], 1
mov dword [esp + 0x24], 2
jmp 0x644dc753
lea eax, [esp + 0x70]
mov dword [esp + 0x34], 0
xor edx, edx
mov dword [esp + 0x20], eax
jmp 0x644dc9c6
mov eax, dword [esp + 0x7c]
mov ecx, ebp
mov edx, dword [esp + 0x20]
shr eax, cl
mov dword [esp + 0x70], eax
mov eax, 1
jmp 0x644dcfe0
mov eax, dword [esp + 0x8c]
movzx ecx, byte [esp + 0x1c]
shr eax, cl
mov dword [esp + 0x80], eax
mov eax, 1
jmp 0x644dd428
mov ebx, dword [esp + 0x8c]
xor eax, eax
shr ebx, 1
test edx, edx
setne al
or eax, dword [esp + 0x80]
cmp dword [esp + 0x1c], 0x7fff
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x80], eax
mov edi, eax
jne 0x644dcdb0
movzx eax, word [esp + 0x5e]
or dword [esp + 0x24], 0x28
and ax, 0xc00
je 0x644ddad8
cmp ax, 0x800
jne 0x644dd80a
cmp byte [esp + 0x3b], 0
je 0x644ddad8
cmp ax, 0x400
jne 0x644dd81b
cmp byte [esp + 0x3b], 0
jne 0x644ddad8
mov dword [esp + 0x8c], 0xffffffff
mov dword [esp + 0x88], 0xffffffff
mov dword [esp + 0x84], 0xffffffff
mov dword [esp + 0x80], 0xffffffff
mov dword [esp + 0x1c], 0x7ffe
mov ebx, 0xffffffff
mov edi, 0xffffffff
jmp 0x644dcdcb
mov ecx, dword [esp + 0x28]
mov edx, esi
mov eax, dword [esp + 0x44]
sub eax, edi
sbb edx, dword [esp + 0x3c]
sbb ecx, dword [esp + 0x40]
sbb ebx, dword [esp + 0x34]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], edx
mov dword [esp + 0x80], eax
mov ebx, dword [esp + 0x8c]
mov eax, ebx
test ebx, 0x80000
jne 0x644dd9a7
mov edi, dword [esp + 0x80]
mov edx, edi
mov dword [esp + 0x1c], 1
and edx, 7
mov dword [esp + 0x24], 2
jmp 0x644dcdb5
mov eax, dword [esp + 0x28]
mov dword [esp + 0x20], 2
or eax, ebx
or eax, esi
or eax, dword [esp + 0x44]
je 0x644dd8f8
xor eax, eax
test ebx, 0x40000
sete al
add eax, 2
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x84], esi
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x88], eax
jmp 0x644dd057
mov dword [esp + 0x1c], 0
jmp 0x644dcc9f
mov eax, dword [esp + 0x28]
or eax, ebx
or eax, esi
or eax, dword [esp + 0x44]
je 0x644dd02c
mov edx, ebx
shr edx, 0x12
xor edx, 1
and edx, 1
mov dword [esp + 0x20], edx
jmp 0x644dd02c
mov esi, dword [esp + 0x30]
test esi, esi
jne 0x644dcb00
add edi, 8
adc edx, 0
adc ecx, 0
adc ebx, 0
jmp 0x644dcb00
mov ebp, dword [esp + 0x30]
test ebp, ebp
je 0x644dcb00
jmp 0x644dd964
mov esi, edi
and esi, 0xf
cmp esi, 4
je 0x644dcb00
add edi, 4
adc edx, 0
adc ecx, 0
adc ebx, 0
jmp 0x644dcb00
mov dword [esp + 0x1c], 1
mov dword [esp + 0x24], 2
jmp 0x644dc63c
mov eax, 0x20
sub eax, ebp
mov ecx, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + edx*4 + 0x70]
shl eax, cl
or dword [esp + 0x34], eax
test edi, edi
je 0x644de377
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x2c]
mov eax, ecx
lea ecx, [ecx + edi*4]
mov dword [esp + 0x40], ecx
mov edx, dword [eax + esi*4]
mov ecx, ebp
mov ebx, dword [eax + esi*4 + 4]
add eax, 4
shr edx, cl
movzx ecx, byte [esp + 0x3c]
shl ebx, cl
or edx, ebx
mov dword [eax - 4], edx
cmp dword [esp + 0x40], eax
jne 0x644dd9f4
mov edx, dword [esp + 0x7c]
mov ecx, ebp
mov eax, 4
mov esi, dword [esp + 0x48]
mov ebx, dword [esp + 0x4c]
sub eax, dword [esp + 0x2c]
shr edx, cl
mov dword [esp + edi*4 + 0x70], edx
jmp 0x644dc9fd
lea edi, [esp + 0x70]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x20], edi
jmp 0x644dcf95
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x84], esi
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x80], edi
mov dword [esp + 0x88], eax
mov dword [esp + 0x24], 2
mov eax, dword [esp + 0x8c]
jmp 0x644dcaa4
mov ebx, dword [esp + 0x8c]
mov edi, dword [esp + 0x80]
xor edx, edx
shr ebx, 1
test ebp, ebp
setne dl
mov dword [esp + 0x8c], ebx
or edi, edx
mov dword [esp + 0x80], edi
cmp eax, 0x7fff
je 0x644de293
mov edx, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], 0
and edx, 7
jmp 0x644dcdb5
mov dword [esp + 0x24], 0
jmp 0x644dc648
mov dword [esp + 0x8c], 0
xor edx, edx
xor eax, eax
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x80], 0
jmp 0x644dcc9f
mov dword [esp + 0x24], 2
mov ebp, eax
test ebp, ebp
lea eax, [ebp + 0x1f]
cmovns eax, ebp
sar eax, 5
mov ebx, eax
cmp ebp, 0x1f
jle 0x644de51b
mov ecx, dword [esp + 0x44]
xor eax, eax
xor edx, edx
lea esi, [esp + 0x60]
add eax, 1
or edx, ecx
cmp ebx, eax
jle 0x644ddb4e
mov ecx, dword [esi + eax*4]
add eax, 1
or edx, ecx
cmp ebx, eax
jg 0x644ddb42
test ebx, ebx
mov eax, 1
mov dword [esp + 0x1c], edx
cmovg eax, ebx
mov edx, eax
mov eax, 3
sub eax, ebx
mov dword [esp + 0x2c], eax
mov ecx, eax
test ebp, 0x1f
jne 0x644ddfbb
lea edx, [esi + ebx*4]
xor eax, eax
mov ebp, ecx
mov ecx, dword [edx + eax*4]
mov dword [esi + eax*4], ecx
add eax, 1
cmp eax, ebp
jle 0x644ddb7e
mov eax, 4
sub eax, ebx
cmp eax, 3
jg 0x644ddbaf
lea esi, [esi]
nop
mov dword [esi + eax*4], 0
add eax, 1
cmp eax, 4
jne 0x644ddba0
mov edx, dword [esp + 0x1c]
xor eax, eax
mov esi, dword [esp + 0x6c]
mov ebx, dword [esp + 0x64]
test edx, edx
mov edx, dword [esp + 0x68]
setne al
or eax, dword [esp + 0x60]
mov dword [esp + 0x1c], eax
jmp 0x644dd51b
mov edx, ebp
sar edx, 0x1f
shr edx, 0x1b
add ebp, edx
and ebp, 0x1f
sub ebp, edx
mov edx, dword [esp + ecx*4 + 0x60]
mov ebx, ebp
mov dword [esp + 0x1c], ebp
mov ebp, 0x20
sub ebp, ebx
mov ecx, ebp
shl edx, cl
mov ecx, dword [esp + 0x2c]
or dword [esp + 0x28], edx
test ecx, ecx
je 0x644de5df
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x30], edi
mov edx, esi
mov dword [esp + 0x44], esi
lea ebx, [esi + ebx*4]
mov esi, ebx
mov ebx, dword [edx + eax*4]
movzx ecx, byte [esp + 0x1c]
mov edi, dword [edx + eax*4 + 4]
add edx, 4
shr ebx, cl
mov ecx, ebp
shl edi, cl
or ebx, edi
mov dword [edx - 4], ebx
cmp edx, esi
jne 0x644ddc1a
mov edx, 4
movzx ecx, byte [esp + 0x1c]
mov ebx, dword [esp + 0x2c]
sub edx, eax
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x44]
mov eax, edx
mov edx, dword [esp + 0x6c]
shr edx, cl
mov dword [esp + ebx*4 + 0x60], edx
jmp 0x644dd2d4
cmp dword [esp + 0x1c], 0x7fff
je 0x644de05a
cmp dword [esp + 0x20], 0x7fff
je 0x644de52e
test eax, eax
je 0x644de0a9
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x40]
or edi, eax
or edi, dword [esp + 0x34]
je 0x644de54a
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
mov edx, esi
shr esi, 3
shl edx, 0x1d
and eax, 0x1fffffff
or edx, eax
mov eax, edi
shr edi, 3
shl eax, 0x1d
mov ecx, edi
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x20], edx
or eax, esi
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x64], eax
mov esi, eax
mov eax, ebx
shr ebx, 3
shl eax, 0x1d
and edx, 0x1fffffff
mov dword [esp + 0x1c], ebx
or ecx, eax
mov eax, edi
shr edi, 3
shl eax, 0x1d
mov dword [esp + 0x68], ecx
or edx, eax
mov dword [esp + 0x70], edx
mov ebx, edx
mov edx, dword [esp + 0x40]
mov eax, edx
shr edx, 3
shl eax, 0x1d
or edi, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x74], edi
shl eax, 0x1d
or eax, edx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x78], eax
shr edx, 3
cmp dword [esp + 0x1c], edx
ja 0x644de63d
je 0x644de61f
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x48]
mov ecx, eax
mov dword [esp + 0x80], ebx
mov ebx, edi
mov dword [esp + 0x88], eax
and ebx, 1
mov dword [esp + 0x1c], edx
mov byte [esp + 0x3b], bl
mov dword [esp + 0x30], edi
mov eax, dword [esp + 0x84]
shr ecx, 0x1d
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x20], ebp
mov edi, dword [esp + 0x88]
mov ebx, ecx
mov ebp, 0x7fff
mov ecx, eax
shl esi, 3
shr ecx, 0x1d
lea edx, [edi*8]
shl eax, 3
or ebx, esi
or edx, ecx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x80]
mov ecx, edx
shl edx, 3
shr ecx, 0x1d
mov dword [esp + 0x80], edx
or eax, ecx
mov dword [esp + 0x84], eax
jmp 0x644dd057
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x34]
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x8c], esi
mov dword [esp + 0x88], eax
test ecx, ecx
jne 0x644de2fd
movzx eax, word [esp + 0x5e]
mov dword [esp + 0x24], 0
and ax, 0xc00
cmp ax, 0x400
mov eax, esi
sete byte [esp + 0x3b]
jmp 0x644dcc90
mov ecx, dword [esp + 0x34]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
sub edi, dword [esp + 0x44]
sbb eax, esi
sbb ebp, dword [esp + 0x28]
sbb ecx, ebx
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x88], ebp
mov dword [esp + 0x80], edi
mov dword [esp + 0x30], eax
jmp 0x644dd894
mov dword [esp + 0x24], 2
mov ebp, eax
jmp 0x644dc98c
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
xor edx, edx
or eax, dword [esp + 0x40]
or eax, esi
or eax, edi
je 0x644dde81
shr esi, 0x12
mov edx, esi
xor edx, 1
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x20], edx
mov ebp, 0x7fff
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x8c], eax
mov ebx, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x30], eax
jmp 0x644dd057
cmp ebp, 0x7fff
je 0x644de57c
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x8c], eax
mov ebx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x24], eax
jmp 0x644dca6f
test eax, eax
mov ebx, dword [esp + 0x34]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x80], edi
setne al
movzx eax, al
mov dword [esp + 0x84], esi
add eax, eax
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x88], eax
mov dword [esp + 0x28], eax
mov eax, ebx
jmp 0x644dca94
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x20], 2
or eax, dword [esp + 0x40]
or eax, esi
or eax, edi
je 0x644ddf75
xor eax, eax
and esi, 0x40000
sete al
add eax, 2
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x8c], eax
mov ebx, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x30], eax
jmp 0x644dd057
mov dword [esp + 0x24], 2
mov ebp, eax
jmp 0x644dd259
mov eax, ebp
sar eax, 0x1f
shr eax, 0x1b
add ebp, eax
and ebp, 0x1f
sub ebp, eax
mov eax, 0x20
sub eax, ebp
mov ecx, eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + edx*4 + 0x60]
shl eax, cl
mov ecx, dword [esp + 0x2c]
or dword [esp + 0x1c], eax
test ecx, ecx
je 0x644de65b
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x44], edi
mov eax, esi
mov edi, dword [esp + 0x28]
mov dword [esp + 0x48], esi
lea ecx, [esi + ecx*4]
mov dword [esp + 0x28], ecx
mov edx, dword [eax + ebx*4]
mov esi, dword [eax + ebx*4 + 4]
mov ecx, ebp
add eax, 4
shr edx, cl
mov ecx, edi
shl esi, cl
or edx, esi
mov dword [eax - 4], edx
cmp dword [esp + 0x28], eax
jne 0x644de006
mov edx, dword [esp + 0x6c]
mov eax, 4
mov ecx, ebp
mov edi, dword [esp + 0x44]
sub eax, ebx
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x48]
shr edx, cl
mov dword [esp + ebx*4 + 0x60], edx
jmp 0x644ddb92
mov dword [esp + 0x28], 0
xor ecx, ecx
lea esi, [esp + 0x60]
jmp 0x644dd29e
test eax, eax
je 0x644de5f8
mov eax, ebx
shr eax, 0x12
xor eax, 1
and eax, 1
cmp dword [esp + 0x20], 0x7fff
mov ebp, eax
jne 0x644ddc85
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x40]
or eax, edi
or eax, dword [esp + 0x34]
je 0x644de54a
test dword [esp + 0x34], 0x40000
mov eax, 1
cmove ebp, eax
test edx, edx
jne 0x644ddc99
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x20], ebp
mov ebp, 0x7fff
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x8c], eax
mov ebx, eax
jmp 0x644dd057
mov ecx, dword [esp + 0x34]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
add edi, dword [esp + 0x44]
adc eax, esi
adc ebp, dword [esp + 0x28]
adc ecx, ebx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x88], ebp
mov dword [esp + 0x84], eax
mov dword [esp + 0x80], edi
jmp 0x644dd724
test edx, edx
je 0x644de391
mov eax, ebx
shr eax, 0x12
xor eax, 1
and eax, 1
cmp dword [esp + 0x20], 0x7fff
mov dword [esp + 0x4c], eax
je 0x644de671
test ecx, ecx
je 0x644de41c
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
mov edx, esi
shr esi, 3
shl edx, 0x1d
mov ebp, dword [esp + 0x40]
and eax, 0x1fffffff
or edx, eax
mov eax, edi
shr edi, 3
shl eax, 0x1d
mov ecx, edi
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x1c], edx
or eax, esi
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x64], eax
mov esi, eax
mov eax, ebx
shr ebx, 3
shl eax, 0x1d
and edx, 0x1fffffff
or ecx, eax
mov eax, edi
shr edi, 3
shl eax, 0x1d
mov dword [esp + 0x68], ecx
or edx, eax
mov eax, ebp
shr ebp, 3
shl eax, 0x1d
mov dword [esp + 0x70], edx
or edi, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x74], edi
shl eax, 0x1d
or eax, ebp
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x78], eax
shr ebp, 3
cmp ebx, ebp
ja 0x644de5c1
je 0x644de5a3
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x48]
mov ecx, eax
mov dword [esp + 0x80], edx
mov ebx, edi
mov dword [esp + 0x88], eax
mov dword [esp + 0x30], edi
and ebx, 1
mov byte [esp + 0x3b], bl
mov ebx, ebp
mov eax, dword [esp + 0x84]
shr ecx, 0x1d
mov edi, dword [esp + 0x88]
lea esi, [ebx*8]
mov ebx, ecx
mov ebp, 0x7fff
mov ecx, eax
lea edx, [edi*8]
shl eax, 3
or ebx, esi
shr ecx, 0x1d
mov dword [esp + 0x8c], ebx
or edx, ecx
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x80]
mov ecx, edx
shl edx, 3
shr ecx, 0x1d
mov dword [esp + 0x80], edx
or eax, ecx
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x20], eax
jmp 0x644dd057
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x40]
or eax, esi
or eax, edi
je 0x644dd6ad
shr esi, 0x12
mov ebx, esi
xor ebx, 1
mov dword [esp + 0x1c], ebx
jmp 0x644dd6ad
movzx eax, word [esp + 0x5e]
and ax, 0xc00
je 0x644de47b
cmp ax, 0x800
jne 0x644de2b3
cmp byte [esp + 0x3b], 0
je 0x644de47b
cmp ax, 0x400
jne 0x644de2c4
cmp byte [esp + 0x3b], 0
jne 0x644de47b
mov dword [esp + 0x8c], 0xffffffff
mov dword [esp + 0x88], 0xffffffff
mov dword [esp + 0x84], 0xffffffff
mov dword [esp + 0x80], 0xffffffff
mov dword [esp + 0x24], 0x28
jmp 0x644dd847
mov ecx, dword [esp + 0x48]
mov ebx, dword [esp + 0x34]
mov esi, dword [esp + 0x3c]
mov eax, ecx
mov dword [esp + 0x30], ecx
and eax, 1
mov byte [esp + 0x3b], al
mov eax, dword [esp + 0x40]
mov dword [esp + 0x28], eax
jmp 0x644dda6f
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x34]
xor edx, edx
or eax, dword [esp + 0x40]
or eax, edi
or eax, esi
je 0x644de33f
shr esi, 0x12
mov edx, esi
xor edx, 1
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x20], edx
mov ebp, 0x7fff
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x8c], eax
mov ebx, eax
jmp 0x644dd057
mov eax, dword [esp + 0x7c]
mov ecx, ebp
mov edx, dword [esp + 0x20]
shr eax, cl
mov dword [esp + 0x70], eax
mov eax, 1
jmp 0x644dca10
cmp dword [esp + 0x20], 0x7fff
jne 0x644dd649
test eax, eax
je 0x644dd651
test dword [esp + 0x34], 0x40000
mov eax, 1
cmovne eax, dword [esp + 0x4c]
mov dword [esp + 0x4c], eax
test edx, edx
jne 0x644de147
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x34]
mov ebp, 0x7fff
mov dword [esp + 0x80], edi
mov edi, dword [esp + 0x48]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], eax
mov eax, edi
and eax, 1
mov dword [esp + 0x30], edi
mov byte [esp + 0x3b], al
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x20], eax
jmp 0x644dd057
test eax, eax
jne 0x644de3a7
test edx, edx
je 0x644dd651
mov eax, dword [esp + 0x44]
mov dword [esp + 0x84], esi
mov ebp, 0x7fff
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x20], eax
jmp 0x644dd057
and ebx, 0xfff7ffff
mov edx, eax
mov edi, eax
mov dword [esp + 0x1c], 1
mov dword [esp + 0x8c], ebx
and edx, 7
mov dword [esp + 0x24], 2
jmp 0x644dcdb5
mov dword [esp + 0x8c], 0
xor edx, edx
xor eax, eax
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x1c], 0x7fff
mov dword [esp + 0x24], 0x28
jmp 0x644dcc9f
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x34]
mov dword [esp + 0x20], 2
or eax, dword [esp + 0x40]
or eax, edi
or eax, esi
je 0x644de4ec
xor eax, eax
and esi, 0x40000
sete al
add eax, 2
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x8c], eax
mov ebx, eax
jmp 0x644dd057
mov dword [esp + 0x1c], 0
xor edx, edx
lea esi, [esp + 0x60]
jmp 0x644ddb5e
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x40]
or eax, edi
or eax, dword [esp + 0x34]
jne 0x644de091
test edx, edx
je 0x644de0a9
mov eax, dword [esp + 0x44]
mov dword [esp + 0x20], ebp
mov ebp, 0x7fff
mov dword [esp + 0x84], esi
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], eax
jmp 0x644dd057
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x34]
or eax, dword [esp + 0x40]
or eax, edi
or eax, esi
je 0x644ddecd
shr esi, 0x12
mov ebx, esi
xor ebx, 1
mov dword [esp + 0x1c], ebx
jmp 0x644ddecd
cmp ecx, eax
ja 0x644de5c1
jne 0x644de1d6
cmp esi, edi
ja 0x644de5c1
jne 0x644de1d6
cmp dword [esp + 0x1c], edx
jbe 0x644de1d6
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], ecx
mov dword [esp + 0x80], eax
jmp 0x644de200
mov eax, dword [esp + 0x6c]
movzx ecx, byte [esp + 0x1c]
shr eax, cl
mov dword [esp + 0x60], eax
mov eax, 1
jmp 0x644dd2e0
cmp dword [esp + 0x20], 0x7fff
jne 0x644de0a9
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x40]
or eax, edi
or eax, dword [esp + 0x34]
jne 0x644de091
jmp 0x644de0a9
cmp ecx, eax
ja 0x644de63d
jne 0x644ddd30
cmp esi, edi
ja 0x644de63d
jne 0x644ddd30
cmp dword [esp + 0x20], ebx
jbe 0x644ddd30
mov eax, dword [esp + 0x20]
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], ecx
mov dword [esp + 0x80], eax
jmp 0x644ddd5c
mov eax, dword [esp + 0x6c]
mov ecx, ebp
shr eax, cl
mov dword [esp + 0x60], eax
mov eax, 1
jmp 0x644ddba0
test ecx, ecx
jne 0x644de3a7
jmp 0x644de41c
mov dword [esp + 0x1c], 0
jmp 0x644dcddd
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
jmp 0x644dd057