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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xac
mov esi, dword [esp + 0xd0]
mov eax, dword [esp + 0xe0]
mov edx, dword [esp + 0xd4]
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0x24], esi
mov edi, dword [esp + 0xe4]
mov dword [esp + 0x40], eax
mov esi, dword [esp + 0xdc]
mov ebp, dword [esp + 0xe8]
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 + 0x34], 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 dword [esp + 0x28], esi
mov dword [esp + 0x68], esi
mov esi, dword [esp + 0x24]
mov ecx, esi
shr ecx, 0x1d
or edx, ecx
mov ecx, eax
mov dword [esp + 0x2c], edx
shr ecx, 0x10
mov dword [esp + 0x64], edx
mov edx, esi
mov esi, dword [esp + 0x40]
and ecx, 0x7fff
shl edx, 3
mov dword [esp + 0x20], ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x60], edx
mov edx, eax
movzx eax, ax
shr edx, 0x1f
shl eax, 3
mov dword [esp + 0x90], esi
mov byte [esp + 0x48], dl
movzx edx, dl
mov dword [esp + 0x38], edx
mov edx, ebp
shl ebp, 3
mov ecx, dword [esp + 0x38]
shr edx, 0x1d
or edx, eax
mov eax, edi
shl edi, 3
shr eax, 0x1d
mov dword [esp + 0x7c], edx
or eax, ebp
mov ebp, dword [esp + 0x1c]
sub ebp, dword [esp + 0x20]
mov dword [esp + 0x44], eax
mov dword [esp + 0x78], eax
mov eax, esi
shl esi, 3
shr eax, 0x1d
mov dword [esp + 0x70], esi
or edi, eax
mov dword [esp + 0x74], edi
cmp dword [esp + 0x30], ecx
je 0x644d7188
test ebp, ebp
jle 0x644d70d0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x644d7350
cmp dword [esp + 0x1c], 0x7fff
je 0x644d7e58
mov eax, edx
mov dword [esp + 0x24], 0
or eax, 0x80000
mov dword [esp + 0x7c], eax
cmp ebp, 0x74
jle 0x644d7a7f
mov dword [esp + 0x20], 1
xor ebp, ebp
xor edi, edi
xor esi, esi
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x20]
sbb edx, ebp
sbb ecx, edi
sbb ebx, esi
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 0x644d7570
and eax, 0x7ffff
mov dword [esp + 0x8c], eax
test eax, eax
je 0x644d7a58
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 0x644d7b30
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 0x644d70bb
jmp 0x644d72d7
je 0x644d7390
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
sub ebp, eax
test eax, eax
jne 0x644d7c70
mov eax, dword [esp + 0x2c]
or eax, dword [esp + 0x28]
or eax, ebx
or eax, dword [esp + 0x3c]
je 0x644d810f
mov eax, ebp
sub eax, 1
je 0x644d8975
cmp ebp, 0x7fff
je 0x644d8aea
cmp eax, 0x74
jle 0x644d8b48
mov dword [esp + 0x24], 2
mov dword [esp + 0x1c], 1
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x28], 0
mov ebp, dword [esp + 0x44]
mov eax, edx
sub esi, dword [esp + 0x1c]
sbb edi, ebx
sbb ebp, ecx
sbb eax, dword [esp + 0x28]
mov dword [esp + 0x8c], eax
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x88], ebp
mov byte [esp + 0x34], al
mov eax, dword [esp + 0x20]
mov dword [esp + 0x84], edi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x80], esi
mov dword [esp + 0x30], eax
jmp 0x644d705e
test ebp, ebp
jle 0x644d7870
mov ecx, dword [esp + 0x20]
test ecx, ecx
jne 0x644d7488
mov eax, dword [esp + 0x44]
or eax, edi
or eax, edx
or eax, esi
je 0x644d8484
mov eax, ebp
sub eax, 1
je 0x644d822b
cmp ebp, 0x7fff
je 0x644d8420
cmp eax, 0x74
jle 0x644d8a04
mov dword [esp + 0x24], 2
mov dword [esp + 0x20], 1
xor ebp, ebp
xor edi, edi
xor esi, esi
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
add eax, dword [esp + 0x20]
adc edx, ebp
adc ecx, edi
adc ebx, esi
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 esi, edx
test eax, 0x80000
je 0x644d7577
add dword [esp + 0x1c], 1
and eax, 0xfff7ffff
shl edx, 0x1f
mov ecx, esi
mov dword [esp + 0x8c], eax
lea ebx, [esp + 0x8c]
lea eax, [esp + 0x80]
mov esi, dword [eax + 4]
shr ecx, 1
add eax, 4
shl esi, 0x1f
or esi, ecx
mov dword [eax - 4], esi
cmp ebx, eax
je 0x644d8300
mov ecx, dword [eax]
jmp 0x644d7255
mov eax, dword [esp + 0x84]
test eax, eax
jne 0x644d80a0
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 0x644d70a9
mov dword [esp + 0x20], ecx
cmp ebp, 0x5f
jle 0x644d7b45
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 0x644d72d0
cmp ebp, dword [esp + 0x1c]
jl 0x644d7558
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 0x644d7318
or ebp, dword [edx + ecx*4]
add ecx, 1
cmp eax, ecx
jg 0x644d7304
test eax, eax
mov ecx, 1
cmovg ecx, eax
mov esi, 3
mov edi, esi
sub edi, eax
test bl, 0x1f
jne 0x644d7ed0
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 0x644d732f
mov ecx, 4
sub ecx, eax
mov eax, ecx
jmp 0x644d7f5d
mov eax, dword [esp + 0x44]
or eax, edi
or eax, edx
or eax, esi
je 0x644d7e00
mov eax, ebp
sub eax, 1
je 0x644d83b0
cmp ebp, 0x7fff
je 0x644d8420
cmp eax, 0x74
jle 0x644d7a75
mov dword [esp + 0x24], 2
jmp 0x644d701e
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
add eax, 1
and eax, 0x7ffe
mov dword [esp + 0x4c], eax
jne 0x644d7d80
mov eax, dword [esp + 0x2c]
or ecx, ebx
mov ebp, dword [esp + 0x3c]
or eax, ecx
mov ecx, dword [esp + 0x44]
or ebp, eax
or ecx, edx
mov eax, ecx
or eax, edi
mov ecx, eax
mov eax, dword [esp + 0x1c]
or ecx, esi
test eax, eax
jne 0x644d81af
test ebp, ebp
je 0x644d89bb
test ecx, ecx
je 0x644d85a6
mov ecx, ebx
mov ebp, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
sub eax, esi
sbb ebx, edi
sbb ebp, dword [esp + 0x44]
sbb ecx, edx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x84], ebx
mov ebx, ecx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x88], ebp
mov dword [esp + 0x80], eax
test ecx, 0x80000
je 0x644d776a
mov ebp, dword [esp + 0x44]
mov eax, edx
mov dword [esp + 0x24], 2
sub esi, dword [esp + 0x60]
sbb edi, dword [esp + 0x64]
sbb ebp, dword [esp + 0x68]
sbb eax, dword [esp + 0x6c]
mov ebx, eax
mov dword [esp + 0x8c], eax
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x88], ebp
mov byte [esp + 0x34], al
mov eax, dword [esp + 0x38]
mov dword [esp + 0x84], edi
mov dword [esp + 0x30], eax
mov eax, ebx
mov dword [esp + 0x80], esi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], ebp
jmp 0x644d75a0
cmp dword [esp + 0x1c], 0x7fff
je 0x644d7e58
mov eax, edx
mov dword [esp + 0x24], 0
or eax, 0x80000
mov dword [esp + 0x7c], eax
cmp ebp, 0x74
jg 0x644d71d4
mov edx, ebp
sar edx, 5
je 0x644d82b8
lea edi, [esp + 0x70]
mov dword [esp + 0x38], edx
mov eax, edi
lea ecx, [edi + edx*4]
xor edx, edx
add eax, 4
or edx, esi
cmp ecx, eax
je 0x644d74e0
mov esi, dword [eax]
add eax, 4
or edx, esi
cmp ecx, eax
jne 0x644d74d5
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x38]
mov ecx, edx
mov eax, 3
sub eax, edx
mov esi, eax
and ebp, 0x1f
jne 0x644d8520
lea ecx, [edi + edx*4]
xor eax, eax
mov ebp, dword [ecx + eax*4]
mov dword [edi + eax*4], ebp
add eax, 1
cmp eax, esi
jle 0x644d7501
mov eax, 4
sub eax, edx
jmp 0x644d752a
mov dword [edi + eax*4], 0
add eax, 1
cmp eax, 4
jne 0x644d7520
mov edx, dword [esp + 0x20]
xor eax, eax
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
mov ebp, dword [esp + 0x74]
test edx, edx
setne al
or eax, dword [esp + 0x70]
mov dword [esp + 0x20], eax
jmp 0x644d71e2
mov ebx, dword [esp + 0x8c]
sub dword [esp + 0x1c], ebp
and ebx, 0xfff7ffff
mov dword [esp + 0x8c], ebx
mov esi, dword [esp + 0x80]
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x644d78d0
mov eax, dword [esp + 0x84]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x2c]
or edx, esi
or edx, dword [esp + 0x28]
or edx, ebx
je 0x644d77a8
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
lea edx, [ebx + ebx]
mov ecx, edi
add edi, edi
shr ecx, 0x1f
mov ebx, ecx
mov ecx, ebp
shr ecx, 0x1f
or ebx, edx
mov edx, esi
add esi, esi
or ecx, edi
mov edi, ebp
shr edx, 0x1f
add edi, edi
or edx, edi
test esi, 6
je 0x644d7612
movzx edi, word [esp + 0x5e]
or dword [esp + 0x24], 0x20
and di, 0xc00
cmp di, 0x400
je 0x644d84fd
cmp di, 0x800
je 0x644d84e0
test di, di
je 0x644d84b8
mov esi, dword [esp + 0x80]
and ebx, 0x100000
mov ebp, ebx
mov ebx, eax
mov edx, esi
test esi, 7
jne 0x644d7968
mov ecx, eax
and ecx, 0x80000
test ebp, ebp
jne 0x644d7659
mov edi, dword [esp + 0x24]
and edi, 0x20
mov dword [esp + 0x1c], edi
jne 0x644d7722
test byte [esp + 0x5e], 0x10
je 0x644d7730
test ecx, ecx
je 0x644d8477
and eax, 0xfff7ffff
mov dword [esp + 0x1c], 1
mov dword [esp + 0x8c], eax
movzx ebp, word [esp + 0x1c]
mov edi, dword [esp + 0x84]
mov ebx, edx
mov eax, dword [esp + 0x8c]
and bp, 0x7fff
mov ecx, edi
shl ecx, 0x1d
shr ebx, 3
mov esi, eax
shr edi, 3
or ebx, ecx
mov ecx, dword [esp + 0x88]
shl esi, 0x1d
shr eax, 3
mov edx, ecx
shr ecx, 3
shl edx, 0x1d
or esi, ecx
or edi, edx
cmp dword [esp + 0x1c], 0x7fff
jne 0x644d76d6
mov edx, ebx
mov ecx, eax
or edx, edi
or ch, 0x80
or edx, esi
or edx, eax
mov eax, 0
cmovne eax, ecx
mov word [esp + 0x9c], ax
movzx eax, byte [esp + 0x34]
mov edx, dword [esp + 0x24]
shl eax, 0xf
or ebp, eax
mov word [esp + 0x9e], bp
mov ebp, dword [esp + 0x9c]
test edx, edx
jne 0x644d7b18
mov eax, dword [esp + 0xc0]
mov dword [eax], ebx
mov dword [eax + 4], edi
mov dword [eax + 8], esi
mov dword [eax + 0xc], ebp
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov dword [esp + 0x1c], 0
lea esi, [esi]
or dword [esp + 0x24], 0x10
test ecx, ecx
je 0x644d77d8
add dword [esp + 0x1c], 1
mov eax, dword [esp + 0x1c]
and ebx, 0xfff7ffff
mov dword [esp + 0x8c], ebx
cmp eax, 0x7fff
je 0x644d77f0
mov edx, dword [esp + 0x80]
jmp 0x644d7675
mov edi, dword [esp + 0x1c]
mov esi, eax
mov eax, ecx
mov dword [esp + 0x28], ebp
or eax, esi
or eax, edi
mov dword [esp + 0x2c], edi
or eax, ebp
jne 0x644d85ce
movzx eax, word [esp + 0x5e]
mov dword [esp + 0x24], 2
and ax, 0xc00
cmp ax, 0x400
mov eax, ecx
sete byte [esp + 0x34]
lea esi, [esi]
mov dword [esp + 0x1c], 0
mov edx, dword [esp + 0x80]
movzx ebp, word [esp + 0x1c]
mov edi, dword [esp + 0x84]
mov ebx, edx
and bp, 0x7fff
mov ecx, edi
jmp 0x644d7691
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x8c]
jmp 0x644d77b7
movzx eax, word [esp + 0x5e]
and ax, 0xc00
je 0x644d7a28
cmp ax, 0x800
je 0x644d7a19
cmp ax, 0x400
jne 0x644d781b
mov ecx, dword [esp + 0x30]
test ecx, ecx
jne 0x644d7a28
mov dword [esp + 0x8c], 0xffffffff
mov ebx, 0xffffffff
mov ebp, 0x7ffe
mov dword [esp + 0x88], 0xffffffff
mov dword [esp + 0x84], 0xffffffff
mov dword [esp + 0x1c], 0x7ffe
or dword [esp + 0x24], 0x28
mov edi, dword [esp + 0x84]
mov ecx, ebx
mov eax, dword [esp + 0x8c]
jmp 0x644d7691
je 0x644d7bc0
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
sub ebp, eax
test eax, eax
jne 0x644d8028
mov eax, dword [esp + 0x2c]
or eax, dword [esp + 0x28]
or eax, ebx
or eax, dword [esp + 0x3c]
je 0x644d8a6c
mov eax, ebp
sub eax, 1
je 0x644d8c15
cmp ebp, 0x7fff
je 0x644d9060
cmp eax, 0x74
jle 0x644d8674
mov dword [esp + 0x24], 2
jmp 0x644d8051
mov edx, esi
and edx, 7
test edx, edx
je 0x644d925b
or dword [esp + 0x24], 0x20
movzx eax, word [esp + 0x5e]
and ax, 0xc00
xor edi, edi
cmp ax, 0x400
je 0x644d79b0
cmp ax, 0x800
jne 0x644d7950
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x644d793b
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x84]
add esi, 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], esi
mov ecx, ebx
and ecx, 0x80000
test edi, edi
jne 0x644d7730
jmp 0x644d7735
test ax, ax
je 0x644d79d0
mov ecx, ebx
and ecx, 0x80000
jmp 0x644d7735
xor ecx, ecx
test ebp, ebp
sete cl
or dword [esp + 0x24], 0x20
mov edi, ecx
movzx ecx, word [esp + 0x5e]
and cx, 0xc00
cmp cx, 0x800
je 0x644d926c
ja 0x644d7eb0
test cx, cx
je 0x644d79c1
cmp cx, 0x400
jne 0x644d7eb0
mov dword [esp + 0x1c], 0
lea esi, [esi]
mov ebp, dword [esp + 0x30]
test ebp, ebp
je 0x644d793b
jmp 0x644d7905
mov dword [esp + 0x1c], 0
lea esi, [esi]
mov eax, esi
and eax, 0xf
cmp eax, 4
je 0x644d793b
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x84]
add esi, 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], esi
jmp 0x644d793b
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x644d781b
lea esi, [esi]
mov dword [esp + 0x8c], 0
xor ebx, ebx
mov ebp, 0x7fff
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
jmp 0x644d784e
mov eax, dword [esp + 0x88]
test eax, eax
je 0x644d7278
bsr eax, eax
xor eax, 0x1f
add eax, 0x20
jmp 0x644d708d
mov dword [esp + 0x24], 2
mov ebp, eax
mov eax, ebp
sar eax, 5
je 0x644d8593
xor edx, edx
xor ecx, ecx
lea edi, [esp + 0x70]
add edx, 1
or ecx, esi
cmp eax, edx
je 0x644d7aa7
mov esi, dword [edi + edx*4]
add edx, 1
or ecx, esi
cmp eax, edx
jne 0x644d7a9b
mov dword [esp + 0x20], ecx
mov edx, eax
mov ecx, 3
mov esi, ecx
sub esi, eax
and ebp, 0x1f
jne 0x644d7fb8
lea ecx, [edi + eax*4]
xor edx, edx
mov ebp, dword [ecx + edx*4]
mov dword [edi + edx*4], ebp
add edx, 1
cmp edx, esi
jle 0x644d7ac4
mov edx, 4
sub edx, eax
mov eax, edx
jmp 0x644d7aea
mov dword [edi + eax*4], 0
add eax, 1
cmp eax, 4
jne 0x644d7ae0
mov esi, dword [esp + 0x20]
xor eax, eax
mov edi, dword [esp + 0x78]
mov ebp, dword [esp + 0x74]
test esi, esi
mov esi, dword [esp + 0x7c]
setne al
or eax, dword [esp + 0x70]
mov dword [esp + 0x20], eax
jmp 0x644d702c
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.644d6e20
jmp 0x644d7703
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 0x644d7b69
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 0x644d72da
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
add eax, 1
mov ebp, eax
mov dword [esp + 0x4c], eax
and ebp, 0x7ffe
jne 0x644d80ae
mov eax, dword [esp + 0x2c]
or ecx, ebx
or eax, ecx
mov ecx, dword [esp + 0x3c]
or ecx, eax
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x644d8803
mov eax, dword [esp + 0x44]
or eax, edx
or eax, edi
or eax, esi
test ecx, ecx
je 0x644d8aab
test eax, eax
je 0x644d85a6
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
add eax, esi
adc ebp, edi
adc ecx, dword [esp + 0x44]
adc ebx, edx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], ebp
mov dword [esp + 0x80], eax
test ebx, 0x80000
jne 0x644d8ff2
mov esi, eax
mov dword [esp + 0x2c], ebp
mov eax, ebx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], 2
jmp 0x644d75a0
cmp dword [esp + 0x20], 0x7fff
je 0x644d8a13
or ebx, 0x80000
mov dword [esp + 0x24], 0
mov dword [esp + 0x6c], ebx
cmp ebp, 0x74
jg 0x644d7124
test ebp, ebp
lea eax, [ebp + 0x1f]
cmovns eax, ebp
sar eax, 5
cmp ebp, 0x1f
jle 0x644d8bfe
lea ebx, [esp + 0x60]
xor ecx, ecx
mov dword [esp + 0x28], edx
xor edx, edx
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x3c]
add ecx, 1
or edx, ebx
cmp eax, ecx
jle 0x644d7cda
mov ebx, dword [esp + 0x1c]
mov ebx, dword [ebx + ecx*4]
add ecx, 1
or edx, ebx
cmp eax, ecx
jg 0x644d7cca
test eax, eax
mov ecx, 1
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x28]
cmovg ecx, eax
mov ebx, 3
sub ebx, eax
mov dword [esp + 0x2c], ebx
test ebp, 0x1f
jne 0x644d8767
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x28], edx
xor ebx, ebx
mov dword [esp + 0x30], eax
lea ecx, [ebp + eax*4]
mov eax, dword [esp + 0x2c]
mov edx, dword [ecx + ebx*4]
mov dword [ebp + ebx*4], edx
add ebx, 1
cmp ebx, eax
jle 0x644d7d19
mov eax, dword [esp + 0x30]
mov ecx, 4
mov edx, dword [esp + 0x28]
sub ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0x1c]
cmp eax, 3
jg 0x644d7d57
lea esi, [esi]
mov dword [ecx + eax*4], 0
add eax, 1
cmp eax, 4
jne 0x644d7d48
mov ecx, dword [esp + 0x34]
xor eax, eax
mov ebx, dword [esp + 0x64]
test ecx, ecx
mov ecx, dword [esp + 0x68]
setne al
or eax, dword [esp + 0x60]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x28], eax
jmp 0x644d7138
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
sub eax, esi
sbb ebp, edi
sbb ecx, dword [esp + 0x44]
sbb ebx, edx
mov dword [esp + 0x80], eax
mov eax, ebx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], ebp
test eax, 0x80000
jne 0x644d815f
mov edx, dword [esp + 0x80]
or edx, ebx
or edx, dword [esp + 0x84]
or edx, dword [esp + 0x88]
jne 0x644d8632
movzx eax, word [esp + 0x5e]
mov dword [esp + 0x24], 0
and ax, 0xc00
cmp ax, 0x400
mov eax, ebx
sete byte [esp + 0x34]
jmp 0x644d77a8
cmp ebp, 0x7fff
je 0x644d8290
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x8c], ebx
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x84], 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 0x644d7735
mov eax, dword [esp + 0x28]
mov dword [esp + 0x20], 0
or eax, ebx
or eax, dword [esp + 0x2c]
or eax, dword [esp + 0x3c]
je 0x644d7e7f
mov edx, ebx
shr edx, 0x12
xor edx, 1
and edx, 1
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x8c], ebx
mov ebp, 0x7fff
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x88], eax
jmp 0x644d7e3b
mov ecx, eax
mov dword [esp + 0x1c], 0
and ecx, 0x80000
test ebp, ebp
je 0x644d7730
jmp 0x644d7659
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 0x644d82e1
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 0x644d7f16
mov ecx, 4
mov ebx, 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 ebx, cl
mov dword [esp + edi*4 + 0x80], ebx
cmp eax, 3
jg 0x644d7f77
lea esi, [esi]
mov dword [edx + eax*4], 0
add eax, 1
cmp eax, 4
jne 0x644d7f68
xor eax, eax
test ebp, ebp
setne al
or eax, dword [esp + 0x80]
mov dword [esp + 0x80], eax
mov esi, eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x8c]
mov ebx, eax
jmp 0x644d75a0
mov edx, dword [esp + edx*4 + 0x70]
mov ecx, 0x20
sub ecx, ebp
shl edx, cl
mov dword [esp + 0x38], ecx
or dword [esp + 0x20], edx
test esi, esi
je 0x644d82cb
lea ecx, [edi + esi*4]
mov dword [esp + 0x44], esi
mov edx, edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x48], ebx
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 + 0x38]
shl ebx, cl
or esi, ebx
mov dword [edx - 4], esi
cmp edx, dword [esp + 0x40]
jne 0x644d7fe6
mov edx, 4
mov esi, dword [esp + 0x44]
mov ecx, ebp
mov ebx, dword [esp + 0x48]
sub edx, eax
mov eax, edx
mov edx, dword [esp + 0x7c]
shr edx, cl
mov dword [esp + esi*4 + 0x70], edx
jmp 0x644d7aea
cmp dword [esp + 0x20], 0x7fff
je 0x644d8ed7
or ebx, 0x80000
mov dword [esp + 0x24], 0
mov dword [esp + 0x6c], ebx
cmp ebp, 0x74
jle 0x644d867e
mov dword [esp + 0x1c], 1
xor ecx, ecx
xor ebx, ebx
mov dword [esp + 0x28], 0
mov ebp, dword [esp + 0x44]
mov eax, edx
add esi, dword [esp + 0x1c]
adc edi, ecx
adc ebp, dword [esp + 0x28]
adc eax, ebx
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x88], ebp
mov dword [esp + 0x84], edi
mov dword [esp + 0x80], esi
mov dword [esp + 0x1c], eax
jmp 0x644d7214
bsr eax, eax
xor eax, 0x1f
add eax, 0x40
jmp 0x644d708d
mov eax, dword [esp + 0x2c]
mov ebp, dword [esp + 0x3c]
add ebp, esi
adc eax, edi
adc ecx, dword [esp + 0x44]
adc ebx, edx
mov dword [esp + 0x8c], ebx
mov edi, ebp
lea esi, [esp + 0x8c]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x88], ecx
lea ecx, [esp + 0x80]
mov dword [esp + 0x80], ebp
shl ebp, 0x1f
mov edx, dword [ecx + 4]
shr edi, 1
add ecx, 4
shl edx, 0x1f
or edx, edi
mov dword [ecx - 4], edx
cmp ecx, esi
je 0x644d85e2
mov edi, dword [ecx]
jmp 0x644d80f3
cmp ebp, 0x7fff
je 0x644d8e92
mov eax, dword [esp + 0x44]
mov dword [esp + 0x80], esi
mov ebx, edx
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], eax
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x8c], edx
mov byte [esp + 0x34], al
mov eax, dword [esp + 0x38]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x24], eax
jmp 0x644d7577
mov ebp, dword [esp + 0x44]
movzx ebx, byte [esp + 0x48]
mov eax, edx
mov dword [esp + 0x24], 0
sub esi, dword [esp + 0x60]
sbb edi, dword [esp + 0x64]
sbb ebp, dword [esp + 0x68]
sbb eax, dword [esp + 0x6c]
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x38]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x88], ebp
mov dword [esp + 0x80], esi
mov byte [esp + 0x34], bl
mov dword [esp + 0x30], edi
jmp 0x644d707f
cmp dword [esp + 0x1c], 0x7fff
je 0x644d8cc3
cmp dword [esp + 0x20], 0x7fff
je 0x644d8f35
test ebp, ebp
jne 0x644d8ce8
test ecx, ecx
jne 0x644d8fad
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 + 0x34], 1
mov dword [esp + 0x30], 1
mov dword [esp + 0x20], 1
jmp 0x644d7e3b
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
add eax, esi
adc ebp, edi
adc ecx, dword [esp + 0x44]
adc ebx, edx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], ebp
mov dword [esp + 0x80], eax
mov ebx, dword [esp + 0x8c]
mov esi, dword [esp + 0x80]
mov eax, ebx
mov edx, esi
test ebx, 0x80000
je 0x644d8400
mov dword [esp + 0x1c], 1
mov dword [esp + 0x24], 2
jmp 0x644d7231
mov eax, dword [esp + 0x28]
or eax, ebx
or eax, dword [esp + 0x2c]
or eax, dword [esp + 0x3c]
je 0x644d7e0c
mov edx, ebx
shr edx, 0x12
xor edx, 1
and edx, 1
mov dword [esp + 0x20], edx
jmp 0x644d7e0c
mov dword [esp + 0x20], 0
xor ecx, ecx
lea edi, [esp + 0x70]
jmp 0x644d74ea
mov eax, dword [esp + 0x7c]
mov ecx, ebp
shr eax, cl
mov dword [esp + 0x70], eax
mov eax, 1
jmp 0x644d7ae0
mov eax, dword [esp + 0x8c]
movzx ecx, byte [esp + 0x1c]
shr eax, cl
mov dword [esp + 0x80], eax
mov eax, 1
jmp 0x644d7f68
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 esi, eax
jne 0x644d78d0
movzx eax, word [esp + 0x5e]
or dword [esp + 0x24], 0x28
and ax, 0xc00
je 0x644d863f
cmp byte [esp + 0x34], 0
jne 0x644d835a
cmp ax, 0x800
je 0x644d863f
cmp ax, 0x400
jne 0x644d836b
cmp byte [esp + 0x34], 0
jne 0x644d863f
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 esi, 0xffffffff
jmp 0x644d78eb
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
sub eax, esi
sbb ebp, edi
sbb ecx, dword [esp + 0x44]
sbb ebx, edx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], ebp
mov dword [esp + 0x80], eax
mov ebx, dword [esp + 0x8c]
mov eax, ebx
test ebx, 0x80000
jne 0x644d850b
mov esi, dword [esp + 0x80]
mov edx, esi
mov dword [esp + 0x1c], 1
and edx, 7
mov dword [esp + 0x24], 2
jmp 0x644d78d5
mov eax, dword [esp + 0x28]
mov dword [esp + 0x20], 2
or eax, ebx
or eax, dword [esp + 0x2c]
or eax, dword [esp + 0x3c]
je 0x644d844a
xor eax, eax
test ebx, 0x40000
sete al
add eax, 2
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x88], eax
jmp 0x644d7e3b
mov dword [esp + 0x1c], 0
jmp 0x644d77b7
cmp ebp, 0x7fff
jne 0x644d7e0c
mov eax, dword [esp + 0x28]
or eax, ebx
or eax, dword [esp + 0x2c]
or eax, dword [esp + 0x3c]
je 0x644d7e0c
mov edx, ebx
shr edx, 0x12
xor edx, 1
mov dword [esp + 0x20], edx
jmp 0x644d7e0c
mov edi, esi
and edi, 0xf
cmp edi, 4
je 0x644d7612
add esi, 4
adc edx, 0
adc ecx, 0
adc ebx, 0
jmp 0x644d7612
mov ebp, dword [esp + 0x30]
test ebp, ebp
jne 0x644d7612
add esi, 8
adc edx, 0
adc ecx, 0
adc ebx, 0
jmp 0x644d7612
mov edi, dword [esp + 0x30]
test edi, edi
je 0x644d7612
jmp 0x644d84ec
mov dword [esp + 0x1c], 1
mov dword [esp + 0x24], 2
jmp 0x644d7073
mov eax, 0x20
sub eax, ebp
mov dword [esp + 0x38], eax
mov eax, dword [esp + ecx*4 + 0x70]
movzx ecx, byte [esp + 0x38]
shl eax, cl
or dword [esp + 0x20], eax
test esi, esi
je 0x644d8f1f
lea ecx, [edi + esi*4]
mov dword [esp + 0x44], esi
mov eax, edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x48], ebx
mov esi, dword [eax + edx*4]
mov ecx, ebp
mov ebx, dword [eax + edx*4 + 4]
add eax, 4
shr esi, cl
movzx ecx, byte [esp + 0x38]
shl ebx, cl
or esi, ebx
mov dword [eax - 4], esi
cmp dword [esp + 0x40], eax
jne 0x644d8553
mov eax, 4
mov esi, dword [esp + 0x44]
mov ecx, ebp
mov ebx, dword [esp + 0x48]
sub eax, edx
mov edx, dword [esp + 0x7c]
shr edx, cl
mov dword [esp + esi*4 + 0x70], edx
jmp 0x644d752a
mov dword [esp + 0x20], 0
xor edx, edx
lea edi, [esp + 0x70]
jmp 0x644d7aad
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x80], esi
mov dword [esp + 0x88], eax
mov dword [esp + 0x24], 2
mov eax, dword [esp + 0x8c]
jmp 0x644d75b2
mov ebx, dword [esp + 0x8c]
mov esi, dword [esp + 0x80]
xor edx, edx
mov dword [esp + 0x4c], eax
shr ebx, 1
test ebp, ebp
setne dl
mov dword [esp + 0x8c], ebx
or esi, edx
mov dword [esp + 0x80], esi
cmp eax, 0x7fff
je 0x644d8e28
mov eax, dword [esp + 0x4c]
mov edx, esi
mov dword [esp + 0x24], 0
and edx, 7
mov dword [esp + 0x1c], eax
jmp 0x644d78d5
mov dword [esp + 0x24], 0
jmp 0x644d707f
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 0x644d77b7
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 0x644d90ad
lea ecx, [esp + 0x60]
xor eax, eax
mov dword [esp + 0x2c], edx
xor edx, edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x3c]
add eax, 1
or edx, ecx
cmp ebx, eax
jle 0x644d86c1
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx + eax*4]
add eax, 1
or edx, ecx
cmp ebx, eax
jg 0x644d86b1
test ebx, ebx
mov eax, 1
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x2c]
cmovg eax, ebx
mov ecx, eax
mov eax, 3
sub eax, ebx
mov dword [esp + 0x2c], eax
test ebp, 0x1f
jne 0x644d8b57
mov dword [esp + 0x38], edx
mov ebp, dword [esp + 0x1c]
xor eax, eax
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x2c], ebx
lea ecx, [ebp + ebx*4]
mov ebx, dword [ecx + eax*4]
mov dword [ebp + eax*4], ebx
add eax, 1
cmp eax, edx
jle 0x644d8702
mov ebx, dword [esp + 0x2c]
mov eax, 4
mov edx, dword [esp + 0x38]
sub eax, ebx
mov ecx, dword [esp + 0x1c]
cmp eax, 3
jg 0x644d873f
lea esi, [esi]
nop
mov dword [ecx + eax*4], 0
add eax, 1
cmp eax, 4
jne 0x644d8730
mov ecx, dword [esp + 0x28]
xor eax, eax
mov ebx, dword [esp + 0x6c]
test ecx, ecx
mov ecx, dword [esp + 0x64]
setne al
or eax, dword [esp + 0x60]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x28], eax
jmp 0x644d8065
mov ebx, ebp
sar ebx, 0x1f
shr ebx, 0x1b
add ebp, ebx
and ebp, 0x1f
sub ebp, ebx
mov ebx, ebp
mov dword [esp + 0x28], ebp
mov ebp, 0x20
sub ebp, ebx
mov ebx, dword [esp + ecx*4 + 0x60]
mov ecx, ebp
mov dword [esp + 0x30], ebp
shl ebx, cl
or dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x2c]
test ebx, ebx
je 0x644d9133
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], edx
mov ebp, ebx
lea ebx, [ebx + ecx*4]
mov edx, ebx
mov ebx, dword [ebp + eax*4]
movzx ecx, byte [esp + 0x28]
mov esi, dword [ebp + eax*4 + 4]
add ebp, 4
shr ebx, cl
movzx ecx, byte [esp + 0x30]
shl esi, cl
or ebx, esi
mov dword [ebp - 4], ebx
cmp edx, ebp
jne 0x644d87b6
mov ecx, 4
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x3c]
sub ecx, eax
mov edx, dword [esp + 0x40]
mov eax, ecx
movzx ecx, byte [esp + 0x28]
shr ebx, cl
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + ebx*4 + 0x60], ecx
jmp 0x644d7d38
cmp dword [esp + 0x1c], 0x7fff
je 0x644d8c4a
cmp dword [esp + 0x20], 0x7fff
je 0x644d90c4
test ecx, ecx
je 0x644d8c93
mov eax, dword [esp + 0x44]
or eax, edx
or eax, edi
or eax, esi
je 0x644d90dc
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
shl ecx, 0x1d
and eax, 0x1fffffff
mov esi, ecx
mov ecx, dword [esp + 0x2c]
or esi, eax
mov eax, dword [esp + 0x28]
shr ecx, 3
mov dword [esp + 0x60], esi
shl eax, 0x1d
or eax, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x28]
shr eax, 3
mov ecx, eax
mov eax, ebx
shr ebx, 3
shl eax, 0x1d
or ecx, eax
mov eax, edi
shr edi, 3
shl eax, 0x1d
mov dword [esp + 0x68], ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x40]
and eax, 0x1fffffff
or eax, dword [esp + 0x20]
mov dword [esp + 0x20], eax
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x44]
shl eax, 0x1d
or edi, eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x74], edi
shr eax, 3
mov dword [esp + 0x24], eax
mov eax, edx
shr edx, 3
shl eax, 0x1d
or eax, dword [esp + 0x24]
mov dword [esp + 0x78], eax
cmp ebx, edx
ja 0x644d91d5
je 0x644d91b3
cmp esi, dword [esp + 0x20]
je 0x644d923c
mov dword [esp + 0x88], eax
mov ecx, eax
movzx eax, byte [esp + 0x48]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x84], edi
mov byte [esp + 0x34], al
mov eax, dword [esp + 0x38]
mov dword [esp + 0x80], ebx
mov ebx, edx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x84]
shr ecx, 0x1d
mov dword [esp + 0x20], ebp
lea esi, [ebx*8]
mov edi, dword [esp + 0x88]
mov ebx, ecx
mov ebp, 0x7fff
mov ecx, eax
shl eax, 3
or ebx, esi
shr ecx, 0x1d
lea edx, [edi*8]
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
jmp 0x644d7e3b
mov ebp, dword [esp + 0x44]
mov eax, edx
sub esi, dword [esp + 0x3c]
sbb edi, dword [esp + 0x2c]
sbb ebp, dword [esp + 0x28]
sbb eax, ebx
mov dword [esp + 0x8c], eax
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x88], ebp
mov byte [esp + 0x34], al
mov eax, dword [esp + 0x38]
mov dword [esp + 0x84], edi
mov dword [esp + 0x80], esi
mov dword [esp + 0x30], eax
jmp 0x644d83e2
mov eax, dword [esp + 0x44]
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], edx
test ecx, ecx
jne 0x644d8eb3
movzx eax, word [esp + 0x5e]
mov dword [esp + 0x24], 0
and ax, 0xc00
cmp ax, 0x400
mov eax, edx
sete byte [esp + 0x34]
jmp 0x644d77a8
mov dword [esp + 0x24], 2
mov ebp, eax
jmp 0x644d74b2
mov eax, dword [esp + 0x44]
xor ecx, ecx
or eax, edx
or eax, edi
or eax, esi
je 0x644d8a2b
mov eax, edx
shr eax, 0x12
xor eax, 1
mov ecx, eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x20], ecx
mov ebx, edx
mov ebp, 0x7fff
mov dword [esp + 0x80], esi
mov dword [esp + 0x88], eax
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x84], edi
mov byte [esp + 0x34], al
mov eax, dword [esp + 0x38]
mov dword [esp + 0x8c], edx
mov dword [esp + 0x30], eax
jmp 0x644d7e3b
cmp ebp, 0x7fff
je 0x644d9112
mov eax, dword [esp + 0x44]
mov dword [esp + 0x80], esi
mov ebx, edx
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x8c], edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], ebp
jmp 0x644d7577
test eax, eax
mov dword [esp + 0x80], esi
mov ebx, edx
setne al
mov dword [esp + 0x84], edi
movzx eax, al
mov dword [esp + 0x8c], edx
add eax, eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x88], eax
mov dword [esp + 0x28], eax
mov eax, edx
jmp 0x644d75a0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x20], 2
or eax, edx
or eax, edi
or eax, esi
je 0x644d8b10
xor eax, eax
test edx, 0x40000
sete al
add eax, 2
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x80], esi
mov ebx, edx
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], eax
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x8c], edx
mov byte [esp + 0x34], al
mov eax, dword [esp + 0x38]
mov dword [esp + 0x30], eax
jmp 0x644d7e3b
mov dword [esp + 0x24], 2
mov ebp, eax
jmp 0x644d7c99
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 dword [esp + 0x3c], ebp
mov ebp, eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + ecx*4 + 0x60]
mov ecx, ebp
mov ebp, dword [esp + 0x2c]
shl eax, cl
or dword [esp + 0x28], eax
test ebp, ebp
je 0x644d91f3
mov ecx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x40], edi
mov dword [esp + 0x48], esi
mov edi, dword [esp + 0x38]
mov eax, ecx
lea ecx, [ecx + ebp*4]
mov dword [esp + 0x4c], edx
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x38], ecx
mov esi, dword [eax + ebx*4]
mov edx, dword [eax + ebx*4 + 4]
mov ecx, ebp
add eax, 4
shr esi, cl
mov ecx, edi
shl edx, cl
or esi, edx
mov dword [eax - 4], esi
cmp dword [esp + 0x38], eax
jne 0x644d8bb4
mov eax, 4
movzx ecx, byte [esp + 0x3c]
mov edi, dword [esp + 0x40]
sub eax, ebx
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
shr ebx, cl
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + ebx*4 + 0x60], ecx
jmp 0x644d871f
lea ebx, [esp + 0x60]
mov dword [esp + 0x34], 0
xor ecx, ecx
mov dword [esp + 0x1c], ebx
jmp 0x644d7cec
mov ebp, dword [esp + 0x44]
mov eax, edx
add esi, dword [esp + 0x3c]
adc edi, dword [esp + 0x2c]
adc ebp, dword [esp + 0x28]
adc eax, ebx
mov dword [esp + 0x8c], eax
mov dword [esp + 0x88], ebp
mov dword [esp + 0x84], edi
mov dword [esp + 0x80], esi
jmp 0x644d825d
test ecx, ecx
je 0x644d9190
mov eax, ebx
shr eax, 0x12
xor eax, 1
and eax, 1
cmp dword [esp + 0x20], 0x7fff
mov ebp, eax
jne 0x644d8827
mov eax, dword [esp + 0x44]
or eax, edx
or eax, edi
or eax, esi
je 0x644d90dc
test edx, 0x40000
mov eax, 1
cmove ebp, eax
test ecx, ecx
jne 0x644d8837
mov eax, dword [esp + 0x44]
mov dword [esp + 0x20], ebp
mov ebx, edx
mov ebp, 0x7fff
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], edx
jmp 0x644d7e3b
test ebp, ebp
je 0x644d8f7b
mov eax, ebx
shr eax, 0x12
xor eax, 1
and eax, 1
cmp dword [esp + 0x20], 0x7fff
mov dword [esp + 0x4c], eax
je 0x644d9210
test ecx, ecx
je 0x644d8f41
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
mov ecx, ebp
and eax, 0x1fffffff
shl ecx, 0x1d
mov esi, ecx
mov ecx, ebp
or esi, eax
mov eax, dword [esp + 0x28]
shr ecx, 3
mov dword [esp + 0x60], esi
shl eax, 0x1d
mov ebp, eax
mov eax, dword [esp + 0x28]
or ebp, ecx
shr eax, 3
mov dword [esp + 0x1c], ebp
mov ecx, eax
mov eax, ebx
mov dword [esp + 0x64], ebp
mov ebp, edi
shl eax, 0x1d
shl ebp, 0x1d
shr edi, 3
or ecx, eax
mov eax, dword [esp + 0x40]
shr ebx, 3
mov dword [esp + 0x68], ecx
and eax, 0x1fffffff
or ebp, eax
mov dword [esp + 0x20], ebp
mov dword [esp + 0x70], ebp
mov ebp, dword [esp + 0x44]
mov eax, ebp
shr ebp, 3
shl eax, 0x1d
or edi, eax
mov eax, edx
shr edx, 3
shl eax, 0x1d
mov dword [esp + 0x74], edi
or eax, ebp
mov ebp, edx
mov dword [esp + 0x78], eax
cmp ebx, edx
ja 0x644d9172
je 0x644d9150
cmp esi, dword [esp + 0x20]
je 0x644d921d
mov dword [esp + 0x88], eax
mov ecx, eax
movzx eax, byte [esp + 0x48]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x84], edi
mov byte [esp + 0x34], al
mov eax, dword [esp + 0x38]
mov dword [esp + 0x80], ebx
mov ebx, ebp
mov dword [esp + 0x30], eax
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 0x644d7e3b
movzx eax, word [esp + 0x5e]
and ax, 0xc00
je 0x644d901b
cmp ax, 0x800
jne 0x644d8e48
cmp byte [esp + 0x34], 0
je 0x644d901b
cmp ax, 0x400
jne 0x644d8e59
cmp byte [esp + 0x34], 0
jne 0x644d901b
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 0x644d8397
mov eax, dword [esp + 0x44]
or eax, edx
or eax, edi
or eax, esi
je 0x644d811b
mov ebx, edx
shr ebx, 0x12
xor ebx, 1
mov dword [esp + 0x1c], ebx
jmp 0x644d811b
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x2c], edi
mov ebx, edx
mov byte [esp + 0x34], al
mov eax, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x30], eax
jmp 0x644d85ce
mov eax, dword [esp + 0x44]
xor ecx, ecx
or eax, edx
or eax, edi
or eax, esi
je 0x644d8eef
mov eax, edx
shr eax, 0x12
xor eax, 1
mov ecx, eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x20], ecx
mov ebx, edx
mov ebp, 0x7fff
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], edx
jmp 0x644d7e3b
mov eax, dword [esp + 0x7c]
mov ecx, ebp
shr eax, cl
mov dword [esp + 0x70], eax
mov eax, 1
jmp 0x644d7520
test ecx, ecx
jne 0x644d8f91
test ebp, ebp
je 0x644d81db
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x8c], ebx
mov ebp, 0x7fff
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x20], eax
jmp 0x644d7e3b
cmp dword [esp + 0x20], 0x7fff
jne 0x644d81d3
test ecx, ecx
je 0x644d81db
test edx, 0x40000
mov eax, 1
cmovne eax, dword [esp + 0x4c]
mov dword [esp + 0x4c], eax
test ebp, ebp
jne 0x644d8cf0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x80], esi
mov ebx, edx
mov ebp, 0x7fff
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], eax
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x8c], edx
mov byte [esp + 0x34], al
mov eax, dword [esp + 0x38]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x20], eax
jmp 0x644d7e3b
and ebx, 0xfff7ffff
mov edx, eax
mov esi, eax
mov dword [esp + 0x1c], 1
mov dword [esp + 0x8c], ebx
and edx, 7
mov dword [esp + 0x24], 2
jmp 0x644d78d5
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 0x644d77b7
mov eax, dword [esp + 0x44]
mov dword [esp + 0x20], 2
or eax, edx
or eax, edi
or eax, esi
je 0x644d9086
xor eax, eax
test edx, 0x40000
sete al
add eax, 2
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x80], esi
mov ebx, edx
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], edx
jmp 0x644d7e3b
lea eax, [esp + 0x60]
mov dword [esp + 0x28], 0
xor ecx, ecx
mov dword [esp + 0x1c], eax
jmp 0x644d86d5
mov eax, dword [esp + 0x44]
or eax, edx
or eax, edi
or eax, esi
jne 0x644d8c7d
test ecx, ecx
je 0x644d8c93
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x20], ebp
mov ebp, 0x7fff
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x88], eax
jmp 0x644d7e3b
mov eax, dword [esp + 0x44]
or eax, edx
or eax, edi
or eax, esi
je 0x644d8a78
mov ebx, edx
shr ebx, 0x12
xor ebx, 1
mov dword [esp + 0x1c], ebx
jmp 0x644d8a78
movzx ecx, byte [esp + 0x28]
mov eax, dword [esp + 0x6c]
shr eax, cl
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x60], eax
mov eax, 1
jmp 0x644d7d48
cmp ecx, eax
ja 0x644d9172
jne 0x644d8d84
cmp dword [esp + 0x1c], edi
ja 0x644d9172
jne 0x644d8d8e
cmp esi, dword [esp + 0x20]
ja 0x644d9172
jne 0x644d8d8e
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x80], esi
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], eax
jmp 0x644d8dbc
cmp dword [esp + 0x20], 0x7fff
jne 0x644d8c93
mov eax, dword [esp + 0x44]
or eax, edx
or eax, edi
or eax, esi
jne 0x644d8c7d
jmp 0x644d8c93
cmp ecx, eax
ja 0x644d91d5
jne 0x644d88d5
cmp dword [esp + 0x1c], edi
ja 0x644d91d5
jne 0x644d88df
cmp esi, dword [esp + 0x20]
ja 0x644d91d5
jne 0x644d88df
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x80], esi
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], eax
jmp 0x644d890d
movzx ecx, byte [esp + 0x3c]
mov eax, dword [esp + 0x6c]
shr eax, cl
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x60], eax
mov eax, 1
jmp 0x644d8730
test ecx, ecx
jne 0x644d8f91
jmp 0x644d8f41
cmp dword [esp + 0x1c], edi
jne 0x644d8d8e
cmp ecx, eax
jne 0x644d8d8e
cmp ebx, ebp
jne 0x644d8d8e
jmp 0x644d9172
cmp dword [esp + 0x1c], edi
jne 0x644d88df
cmp ecx, eax
jne 0x644d88df
cmp ebx, edx
jne 0x644d88df
jmp 0x644d91d5
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
jmp 0x644d7e3b
mov dword [esp + 0x1c], 0
jmp 0x644d78fd