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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xbc
mov ecx, dword [esp + 0xf0]
mov edi, dword [esp + 0xe0]
mov eax, dword [esp + 0xe4]
mov esi, dword [esp + 0xe8]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xf4]
mov edx, dword [esp + 0xec]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xf8]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0xfc]
mov dword [esp + 0x28], ecx
fnstcw word [esp + 0x6e]
mov ebx, edx
mov ecx, edx
movzx ebp, dx
mov dword [esp + 0xa0], edi
shr ebx, 0x1f
shr ecx, 0x10
mov dword [esp + 0xa4], eax
mov byte [esp + 0x34], bl
movzx ebx, bl
mov dword [esp + 0xa8], esi
mov dword [esp + 0xac], edx
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x40], ebx
and cx, 0x7fff
je 0x644d9608
cmp cx, 0x7fff
je 0x644d96b8
mov edx, esi
shl ebp, 3
movzx ecx, cx
mov dword [esp + 0x38], 0
shr edx, 0x1d
or ebp, 0x80000
shl esi, 3
mov dword [esp + 0x24], 0
or ebp, edx
mov edx, eax
shl eax, 3
shr edx, 0x1d
mov dword [esp + 0x7c], ebp
or esi, edx
mov edx, edi
shl edi, 3
shr edx, 0x1d
mov dword [esp + 0x78], esi
or eax, edx
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], eax
lea eax, [ecx - 0x3fff]
mov dword [esp + 0x30], eax
xor eax, eax
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x20]
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x84], ebx
mov ebx, ecx
mov ebp, ebx
mov dword [esp + 0xac], ecx
movzx ecx, cx
shr ebp, 0x10
mov dword [esp + 0xa0], esi
mov edx, ebp
mov ebp, ebx
mov dword [esp + 0xa8], edi
shr ebp, 0x1f
mov dword [esp + 0x80], esi
mov ebx, ebp
mov dword [esp + 0x88], edi
movzx ebx, bl
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x3c], ebx
and dx, 0x7fff
je 0x644d9538
cmp dx, 0x7fff
je 0x644d9480
mov ebx, edi
shl ecx, 3
mov edi, dword [esp + 0x1c]
movzx edx, dx
shr ebx, 0x1d
or ecx, 0x80000
sub edx, 0x3fff
sub dword [esp + 0x30], edx
or ecx, ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x8c], ecx
mov ecx, edi
shl ebx, 3
shr ecx, 0x1d
or ecx, ebx
mov ebx, esi
shl esi, 3
mov dword [esp + 0x88], ecx
mov ecx, edi
shr ebx, 0x1d
shl ecx, 3
mov dword [esp + 0x80], esi
or ecx, ebx
mov dword [esp + 0x84], ecx
xor ecx, ecx
movzx ebx, byte [esp + 0x34]
xor ebx, ebp
movzx esi, bl
mov byte [esp + 0x1c], bl
mov dword [esp + 0x44], esi
cmp eax, 0xf
ja case.0x644d9475.0
jmp dword [eax*4 + 0x644e755c]
mov edx, dword [esp + 0x1c]
or edx, dword [esp + 0x2c]
or edx, dword [esp + 0x20]
sub dword [esp + 0x30], 0x7fff
or edx, ecx
jne 0x644d9870
or eax, 2
mov ecx, 2
jmp 0x644d945a
xor edx, edx
xor eax, eax
xor edi, edi
xor esi, esi
xor ebx, ebx
movzx ebp, byte [esp + 0x1c]
mov word [esp + 0xac], ax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xa0], ebx
shl ebp, 0xf
mov dword [esp + 0xa4], esi
or ebp, edx
mov dword [esp + 0xa8], edi
mov word [esp + 0xae], bp
mov ebp, dword [esp + 0xac]
test eax, eax
jne 0x644d9ec7
mov eax, dword [esp + 0xd0]
mov dword [eax], ebx
mov dword [eax + 4], esi
mov dword [eax + 8], edi
mov dword [eax + 0xc], ebp
add esp, 0xbc
pop ebx
pop esi
pop edi
pop ebp
ret 4
or dword [esp + 0x24], 4
mov edx, 0x7fff
xor eax, eax
xor edi, edi
xor esi, esi
xor ebx, ebx
jmp 0x644d94ba
mov edx, dword [esp + 0x1c]
or edx, dword [esp + 0x2c]
or edx, dword [esp + 0x20]
or edx, ecx
je 0x644d98e8
cmp word [esp + 0x28], 0
je 0x644d9f28
bsr esi, ecx
mov edx, 0x20
xor esi, 0x1f
lea ecx, [esi - 0xc]
mov dword [esp + 0x20], esi
xor esi, esi
sub edx, ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x28], edx
mov edx, esi
mov dword [esp + 0x2c], eax
lea ebx, [esp + 0x80]
neg edx
lea edx, [esp + edx*4 + 0x8c]
mov edi, dword [edx]
movzx ecx, byte [esp + 0x1c]
mov eax, dword [edx - 4]
shl edi, cl
movzx ecx, byte [esp + 0x28]
shr eax, cl
or edi, eax
mov dword [edx + esi*4], edi
sub edx, 4
cmp edx, ebx
jne 0x644d958c
mov edi, dword [esp + 0x80]
movzx ecx, byte [esp + 0x1c]
lea edx, [esi - 1]
mov eax, dword [esp + 0x2c]
shl edi, cl
mov dword [esp + esi*4 + 0x80], edi
mov edi, dword [esp + 0x38]
cmp edx, 0xffffffff
je 0x644d95e3
mov dword [ebx + edx*4], 0
sub edx, 1
cmp edx, 0xffffffff
jne 0x644d95d0
mov dword [esp + 0x38], edi
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
or dword [esp + 0x24], 2
lea esi, [esi + ecx + 0x3fef]
xor ecx, ecx
mov dword [esp + 0x30], esi
jmp 0x644d945a
mov ecx, eax
or ecx, edi
or ecx, esi
or ecx, ebp
je 0x644d98c0
test dx, dx
je 0x644d9fa0
bsr ebp, ebp
mov eax, 0x20
xor esi, esi
xor ebp, 0x1f
lea edi, [ebp - 0xc]
sub eax, edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x30], eax
mov eax, esi
lea edi, [esp + 0x70]
neg eax
lea eax, [esp + eax*4 + 0x7c]
mov edx, dword [eax]
movzx ecx, byte [esp + 0x24]
mov ebx, dword [eax - 4]
shl edx, cl
movzx ecx, byte [esp + 0x30]
shr ebx, cl
or edx, ebx
mov dword [eax + esi*4], edx
sub eax, 4
cmp eax, edi
jne 0x644d9645
mov edx, dword [esp + 0x70]
movzx ecx, byte [esp + 0x24]
lea eax, [esi - 1]
shl edx, cl
mov dword [esp + esi*4 + 0x70], edx
mov ebx, dword [esp + 0x28]
cmp eax, 0xffffffff
je 0x644d9693
nop
mov dword [edi + eax*4], 0
sub eax, 1
cmp eax, 0xffffffff
jne 0x644d9680
mov dword [esp + 0x28], ebx
mov ecx, 0xffffc011
mov dword [esp + 0x38], 0
xor eax, eax
sub ecx, ebp
mov dword [esp + 0x24], 2
mov dword [esp + 0x30], ecx
jmp 0x644d9386
or eax, edi
or eax, esi
or eax, ebp
jne 0x644d9898
mov dword [esp + 0x30], 0x7fff
mov eax, 8
mov dword [esp + 0x38], 2
mov dword [esp + 0x24], 0
jmp 0x644d9386
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x9c], eax
movzx eax, byte [esp + 0x34]
mov byte [esp + 0x1c], al
mov eax, dword [esp + 0x40]
mov dword [esp + 0x3c], eax
cmp ecx, 1
je case.0x644d9475.2
test ecx, ecx
je 0x644d9750
cmp ecx, 2
je case.0x644d9475.8
cmp ecx, 3
je 0x644da4d0
mov eax, dword [esp + 0x30]
lea ebp, [eax + 0x3fff]
test ebp, ebp
jle 0x644d9d08
mov esi, dword [esp + 0x94]
mov ebx, dword [esp + 0x90]
mov eax, dword [esp + 0x9c]
mov edx, esi
test bl, 7
je 0x644d97ac
movzx ecx, word [esp + 0x6e]
or dword [esp + 0x24], 0x20
and cx, 0xc00
cmp cx, 0x400
je 0x644da468
cmp cx, 0x800
je 0x644da270
test cx, cx
je 0x644da238
test eax, 0x100000
je 0x644d97c9
and eax, 0xffefffff
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x9c], eax
add ebp, 0x4000
mov edi, dword [esp + 0x98]
shr esi, 3
shl edx, 0x1d
shr ebx, 3
mov eax, edi
or ebx, edx
shr edi, 3
shl eax, 0x1d
mov dword [esp + 0x90], ebx
or esi, eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x94], esi
mov edx, eax
shr eax, 3
shl edx, 0x1d
or edi, edx
mov dword [esp + 0x98], edi
cmp ebp, 0x7ffe
jg 0x644d9e30
mov edx, ebp
and dx, 0x7fff
jmp 0x644d94ba
mov eax, dword [esp + 0x80]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x9c], eax
mov eax, ebp
mov byte [esp + 0x1c], al
jmp 0x644d9731
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
or eax, 3
mov ecx, 3
mov esi, edx
or edx, 1
test di, di
cmovns esi, edx
mov dword [esp + 0x24], esi
jmp 0x644d945a
movsx edx, dx
mov dword [esp + 0x30], 0x7fff
mov eax, 0xc
not edx
mov dword [esp + 0x38], 3
shr edx, 0x1f
mov dword [esp + 0x24], edx
jmp 0x644d9386
mov dword [esp + 0x30], 0
mov eax, 4
mov dword [esp + 0x38], 1
mov dword [esp + 0x24], 0
jmp 0x644d9386
or eax, 1
mov ecx, 1
jmp 0x644d945a
or dword [esp + 0x24], 1
mov eax, 0xffff8000
xor edi, edi
xor esi, esi
mov byte [esp + 0x1c], 1
xor ebx, ebx
mov edx, 0x7fff
jmp 0x644d94ba
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x8c]
cmp eax, edx
jbe 0x644da028
mov esi, dword [esp + 0x74]
mov edi, dword [esp + 0x78]
movzx ecx, byte [esp + 0x34]
mov ebx, dword [esp + 0x70]
or ax, 0x8000
mov byte [esp + 0x1c], cl
jmp 0x644d990d
mov edx, dword [esp + 0x7c]
mov esi, dword [esp + 0x8c]
mov dword [esp + 0xac], 0
mov dword [esp + 0xa8], 0
mov ebp, dword [esp + 0x88]
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
cmp edx, esi
jbe 0x644da058
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x84]
mov ebx, edi
shr edi, 1
shl ebx, 0x1f
mov dword [esp + 0xac], ebx
mov ebx, dword [esp + 0x20]
shl ebx, 0x1f
or edi, ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x70], edi
mov edi, ecx
shr ecx, 1
shr ebx, 1
shl edi, 0x1f
or ebx, edi
mov dword [esp + 0x74], ebx
mov ebx, edx
shr edx, 1
shl ebx, 0x1f
mov dword [esp + 0x7c], edx
or ecx, ebx
mov dword [esp + 0x78], ecx
mov ebx, ebp
shl esi, 0xc
mov ecx, eax
shr ebx, 0x14
shr ecx, 0x14
or ebx, esi
mov esi, ebp
shl eax, 0xc
mov ebp, 3
shl esi, 0xc
mov dword [esp + 0x8c], ebx
or ecx, esi
mov dword [esp + 0x20], ebp
mov dword [esp + 0x88], ecx
mov ecx, dword [esp + 0x80]
mov esi, ecx
shl ecx, 0xc
shr esi, 0x14
mov dword [esp + 0x80], ecx
or eax, esi
mov dword [esp + 0x34], eax
mov dword [esp + 0x84], eax
lea eax, [esp + 0x90]
mov dword [esp + 0x28], eax
cmp edx, ebx
je 0x644d9b23
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x78]
div ebx
mov dword [esp + ebp*4 + 0x90], eax
mov eax, dword [esp + 0x28]
mov ecx, edx
mov edi, dword [esp + 0x80]
mov dword [esp + 0x7c], edx
mov ebx, dword [eax + ebp*4]
mov dword [esp + 0x50], edi
mov eax, ebx
mul edi
mov edi, edx
mov dword [esp + 0x40], eax
mov eax, ebx
mul dword [esp + 0x34]
mov esi, edx
add edi, eax
adc esi, 0
mov eax, dword [esp + 0x88]
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], eax
mov edi, eax
mov eax, ebx
mul edi
mov edi, edx
mov edx, dword [esp + ebp*4 + 0xa0]
add esi, eax
adc edi, 0
mov eax, dword [esp + 0x74]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x70]
mov dword [esp + 0x2c], edx
mov edx, ecx
mov dword [esp + 0x38], edi
mov dword [esp + 0x78], eax
mov dword [esp + 0x74], esi
cmp ecx, edi
jb 0x644d9c00
je 0x644d9bf0
mov ebp, dword [esp + 0x20]
mov edi, dword [esp + 0x2c]
sub edi, dword [esp + 0x40]
sbb esi, dword [esp + 0x48]
sbb eax, dword [esp + 0x3c]
sbb edx, dword [esp + 0x38]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x78], eax
mov dword [esp + 0x74], esi
mov dword [esp + 0x70], edi
test ebp, ebp
je 0x644d9cd8
mov ebx, dword [esp + 0x8c]
sub dword [esp + 0x20], 1
cmp edx, ebx
jne 0x644d9a50
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
mov dword [eax + edx*4], 0xffffffff
test edx, edx
je 0x644d9cee
mov ebp, dword [esp + 0x88]
mov ecx, dword [esp + 0x80]
xor ebx, ebx
mov edi, dword [esp + 0x34]
mov dword [esp + 0x2c], ecx
mov eax, ebp
mov esi, edi
sub ebx, dword [esp + edx*4 + 0xa0]
sbb ecx, dword [esp + 0x70]
sbb esi, dword [esp + 0x74]
sbb eax, dword [esp + 0x78]
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x38], eax
mov esi, dword [esp + 0x2c]
mov eax, ebp
sub esi, ebx
sbb edi, ecx
sbb eax, dword [esp + 0x3c]
sbb edx, dword [esp + 0x38]
mov dword [esp + 0x7c], edx
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x78], eax
mov dword [esp + 0x74], edi
mov dword [esp + 0x70], esi
cmp edx, ebx
jbe 0x644d9b16
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
mov esi, ebp
mov ecx, dword [esp + 0x2c]
mov dword [eax + edi*4], 0xfffffffe
mov edi, dword [esp + 0x34]
mov eax, ebx
add ecx, dword [esp + 0x70]
adc edi, dword [esp + 0x74]
adc esi, dword [esp + 0x78]
adc eax, edx
mov dword [esp + 0x7c], eax
mov edx, eax
mov dword [esp + 0x78], esi
mov dword [esp + 0x74], edi
mov dword [esp + 0x70], ecx
jmp 0x644d9b16
cmp eax, dword [esp + 0x3c]
jae 0x644da128
lea esi, [esi]
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
sub ebx, 1
mov ebp, dword [esp + 0x34]
mov dword [edi + edx*4], ebx
mov edi, dword [esp + 0x8c]
mov edx, dword [esp + 0x4c]
mov ebx, edi
mov dword [esp + 0x54], edi
mov edi, dword [esp + 0x50]
add edi, dword [esp + 0x2c]
adc ebp, esi
adc edx, eax
adc ebx, ecx
mov esi, ebp
mov dword [esp + 0x58], ebp
mov eax, edx
mov ebp, edx
mov dword [esp + 0x78], edx
mov edx, ebx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x74], esi
mov dword [esp + 0x70], edi
cmp ebx, dword [esp + 0x54]
jbe 0x644d9ee0
mov dword [esp + 0x2c], edi
cmp ebx, dword [esp + 0x38]
jb 0x644d9ca0
jne 0x644d9adf
cmp dword [esp + 0x3c], ebp
ja 0x644d9ca0
mov edx, ebx
jne 0x644d9adf
mov ecx, dword [esp + 0x58]
cmp dword [esp + 0x48], ecx
ja 0x644d9ca0
jne 0x644d9adf
mov ecx, dword [esp + 0x5c]
cmp dword [esp + 0x40], ecx
jbe 0x644d9adf
lea esi, [esi]
nop
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x54]
mov edi, dword [esp + 0x50]
sub dword [eax + esi*4], 1
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x34]
add edi, dword [esp + 0x5c]
adc esi, dword [esp + 0x58]
adc eax, ebp
adc edx, ebx
mov dword [esp + 0x2c], edi
jmp 0x644d9adf
mov eax, dword [esp + 0x40]
cmp dword [esp + 0x70], eax
je 0x644da328
or dword [esp + 0x90], 1
mov eax, dword [esp + 0x44]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x30]
lea ebp, [eax + 0x3fff]
test ebp, ebp
jg 0x644d9762
mov ecx, 1
mov ebx, ecx
sub ebx, ebp
test ebp, ebp
jne 0x644da070
mov ecx, dword [esp + 0x90]
mov eax, dword [esp + 0x9c]
test cl, 7
je 0x644d9d80
movzx edx, word [esp + 0x6e]
or dword [esp + 0x24], 0x20
mov edi, dword [esp + 0x94]
mov esi, dword [esp + 0x98]
and dx, 0xc00
cmp dx, 0x400
je 0x644da641
cmp dx, 0x800
je 0x644da622
test dx, dx
jne 0x644d9d80
mov edx, ecx
and edx, 0xf
cmp edx, 4
je 0x644d9d80
mov edx, edi
add ecx, 4
adc edx, 0
adc esi, 0
adc eax, 0
lea esi, [esi]
shr eax, 0x14
lea edi, [esp + 0x90]
mov esi, ebx
xor eax, 1
mov dword [esp + 0x28], edi
sar esi, 5
and eax, 1
mov dword [esp + 0x2c], eax
xor eax, eax
mov edx, 3
mov edi, edx
sub edi, esi
and ebx, 0x1f
mov dword [esp + 0x20], ebx
je 0x644da178
mov edx, 0x20
mov ecx, edx
mov edx, dword [esp + ebp*4 + 0x90]
sub ecx, dword [esp + 0x20]
mov dword [esp + 0x30], ecx
shl edx, cl
or eax, edx
test edi, edi
je 0x644da52e
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x34], eax
mov edx, ecx
lea ebp, [ecx + edi*4]
mov ebx, dword [edx + esi*4]
movzx ecx, byte [esp + 0x20]
mov eax, dword [edx + esi*4 + 4]
add edx, 4
shr ebx, cl
movzx ecx, byte [esp + 0x30]
shl eax, cl
or ebx, eax
mov dword [edx - 4], ebx
cmp edx, ebp
jne 0x644d9de4
mov edx, 4
movzx ecx, byte [esp + 0x20]
mov eax, dword [esp + 0x34]
sub edx, esi
mov esi, dword [esp + 0x9c]
shr esi, cl
mov dword [esp + edi*4 + 0x90], esi
jmp 0x644da197
movzx eax, word [esp + 0x6e]
and ax, 0xc00
cmp ax, 0x400
je 0x644da480
cmp ax, 0x800
jne 0x644da000
mov edi, dword [esp + 0x3c]
mov edx, edi
mov eax, edi
neg edi
neg edx
neg eax
mov ebx, edi
add dx, 0x7fff
lea esi, [esi]
or dword [esp + 0x24], 0x28
mov edi, ebx
mov esi, ebx
mov word [esp + 0xac], ax
movzx eax, word [esp + 0xae]
and dx, 0x7fff
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0xa0], ebx
and ax, 0x8000
mov dword [esp + 0xa4], esi
or edx, eax
shl ecx, 7
mov dword [esp + 0xa8], edi
mov word [esp + 0xae], dx
movzx edx, dh
and edx, 0x7f
or edx, ecx
mov byte [esp + 0xaf], dl
mov ebp, dword [esp + 0xac]
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.644d6e20
jmp 0x644d94fc
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x58]
mov dword [esp + 0x2c], edi
jne 0x644d9adf
cmp dword [esp + 0x4c], eax
jb 0x644d9c5f
jne 0x644d9adf
cmp dword [esp + 0x34], esi
jb 0x644d9c5f
jne 0x644d9adf
cmp dword [esp + 0x80], edi
ja 0x644d9adf
jmp 0x644d9c5f
mov esi, dword [esp + 0x20]
test esi, esi
jne 0x644da110
mov edi, dword [esp + 0x1c]
test edi, edi
je 0x644da420
bsr ecx, edi
xor ecx, 0x1f
lea edi, [ecx + 0x40]
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x20]
lea ecx, [edi - 0xc]
mov esi, ecx
sar esi, 5
and ecx, 0x1f
jne 0x644da3de
mov edx, esi
mov dword [esp + 0x1c], eax
mov edi, dword [esp + 0x38]
lea ecx, [esp + 0x70]
lea ebx, [esp + 0x80]
neg edx
lea edx, [ebx + edx*4]
mov eax, dword [edx + 0xc]
mov dword [edx + esi*4 + 0xc], eax
sub edx, 4
cmp ecx, edx
jne 0x644d9f7c
mov dword [esp + 0x38], edi
mov eax, dword [esp + 0x1c]
lea edx, [esi - 1]
jmp 0x644d95c7
test esi, esi
jne 0x644da100
test eax, eax
je 0x644da3d0
bsr eax, eax
xor eax, 0x1f
lea ebp, [eax + 0x40]
lea ecx, [ebp - 0xc]
mov esi, ecx
sar esi, 5
and ecx, 0x1f
jne 0x644da434
mov eax, esi
lea edi, [esp + 0x70]
mov ebx, dword [esp + 0x28]
lea edx, [esp + 0x60]
neg eax
lea eax, [edi + eax*4]
mov ecx, dword [eax + 0xc]
mov dword [eax + esi*4 + 0xc], ecx
sub eax, 4
cmp edx, eax
jne 0x644d9fdd
mov dword [esp + 0x28], ebx
lea eax, [esi - 1]
jmp 0x644d9676
mov edx, 0x7fff
xor ebx, ebx
test ax, ax
je 0x644d9e68
mov edx, 0x7ffe
mov eax, 0xffffffff
mov ebx, 0xffffffff
jmp 0x644d9e68
mov edi, dword [esp + 0x88]
mov esi, dword [esp + 0x84]
je 0x644da2d8
mov ebx, dword [esp + 0x80]
mov eax, edx
mov ecx, ebp
mov byte [esp + 0x1c], cl
or ax, 0x8000
jmp 0x644d990d
mov eax, dword [esp + 0x84]
je 0x644da2a8
sub dword [esp + 0x30], 1
jmp 0x644d99ea
cmp ebx, 0x74
jle 0x644da2ef
mov ebx, dword [esp + 0x90]
or ebx, dword [esp + 0x94]
or ebx, dword [esp + 0x98]
or ebx, dword [esp + 0x9c]
je 0x644da160
movzx eax, word [esp + 0x6e]
or dword [esp + 0x24], 0x20
mov dword [esp + 0x9c], 0
mov dword [esp + 0x98], 0
and ax, 0xc00
mov dword [esp + 0x94], 0
mov dword [esp + 0x90], 1
cmp ax, 0x400
je 0x644da612
cmp ax, 0x800
je 0x644da5ef
test ax, ax
je 0x644da4f6
xor eax, eax
xor edi, edi
xor esi, esi
xor ebx, ebx
jmp 0x644da166
bsr esi, esi
xor esi, 0x1f
lea ebp, [esi + 0x20]
jmp 0x644d9fb9
bsr ecx, esi
xor ecx, 0x1f
lea edi, [ecx + 0x20]
mov dword [esp + 0x20], edi
jmp 0x644d9f4d
jne 0x644d9adf
mov edi, dword [esp + 0x48]
cmp esi, edi
jb 0x644d9c00
mov ebp, dword [esp + 0x40]
cmp dword [esp + 0x2c], ebp
jae 0x644da14c
cmp esi, edi
je 0x644d9c00
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
jmp 0x644d9adf
xor edi, edi
xor esi, esi
xor eax, eax
or dword [esp + 0x24], 0x10
xor edx, edx
jmp 0x644d9e71
mov ebp, dword [esp + 0x28]
xor edx, edx
lea ecx, [ebp + esi*4]
mov ebx, dword [ecx + edx*4]
mov dword [ebp + edx*4], ebx
add edx, 1
cmp edx, edi
jle 0x644da182
mov edx, 4
sub edx, esi
mov ecx, dword [esp + 0x28]
cmp edx, 4
je 0x644da1af
mov dword [ecx + edx*4], 0
add edx, 1
cmp edx, 4
jne 0x644da1a0
test eax, eax
mov edx, dword [esp + 0x9c]
setne al
movzx eax, al
or eax, dword [esp + 0x90]
mov dword [esp + 0x90], eax
test al, 7
je 0x644da1fe
movzx ecx, word [esp + 0x6e]
or dword [esp + 0x24], 0x20
and cx, 0xc00
cmp cx, 0x400
je 0x644da5e1
cmp cx, 0x800
je 0x644da59a
test cx, cx
je 0x644da551
and edx, 0x80000
je 0x644da360
mov ebp, dword [esp + 0x2c]
or dword [esp + 0x24], 0x20
mov edx, 1
xor eax, eax
xor edi, edi
xor esi, esi
xor ebx, ebx
test ebp, ebp
je 0x644d9e71
or dword [esp + 0x24], 0x10
jmp 0x644d9e71
mov ecx, ebx
and ecx, 0xf
cmp ecx, 4
je 0x644d97ac
mov edx, dword [esp + 0x98]
add ebx, 4
adc esi, 0
adc edx, 0
adc eax, 0
mov dword [esp + 0x98], edx
mov edx, esi
mov dword [esp + 0x9c], eax
jmp 0x644d97ac
mov edi, dword [esp + 0x3c]
test edi, edi
jne 0x644d97ac
mov edx, dword [esp + 0x98]
add ebx, 8
adc esi, 0
adc edx, 0
adc eax, 0
mov dword [esp + 0x98], edx
mov edx, esi
mov dword [esp + 0x9c], eax
jmp 0x644d97ac
mov ecx, dword [esp + 0x78]
cmp ecx, ebp
ja 0x644d9998
jne 0x644da065
mov edi, dword [esp + 0x74]
mov dword [esp + 0x20], edi
cmp edi, eax
jbe 0x644da64f
mov edi, dword [esp + 0x70]
jmp 0x644d99ab
mov ecx, dword [esp + 0x78]
cmp ecx, edi
jbe 0x644da49a
mov esi, dword [esp + 0x74]
mov edi, ecx
jmp 0x644d993b
mov ebp, ebx
sar ebp, 5
je 0x644da672
lea eax, [esp + 0x90]
mov dword [esp + 0x28], eax
mov edx, eax
lea ecx, [eax + ebp*4]
xor eax, eax
or eax, dword [edx]
add edx, 4
cmp edx, ecx
jne 0x644da30c
mov dword [esp + 0x2c], 1
mov esi, ebp
jmp 0x644d9d9f
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x74], eax
jne 0x644d9ce6
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0x78], eax
jne 0x644d9ce6
mov eax, dword [esp + 0x38]
cmp dword [esp + 0x7c], eax
jne 0x644d9ce6
jmp 0x644d9cee
mov eax, dword [esp + 0x28]
lea ebx, [esp + 0x9c]
mov edx, dword [eax]
mov ecx, dword [eax + 4]
add eax, 4
shr edx, 3
shl ecx, 0x1d
or edx, ecx
mov dword [eax - 4], edx
cmp ebx, eax
jne 0x644da36b
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x2c]
xor edx, edx
mov ebx, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
mov edi, dword [esp + 0x98]
shr eax, 3
test ecx, ecx
je 0x644d94ba
test byte [esp + 0x24], 0x20
jne 0x644da228
test byte [esp + 0x6e], 0x10
jne 0x644d94ba
jmp 0x644da228
bsr ebp, edi
xor ebp, 0x1f
add ebp, 0x60
jmp 0x644d9fb9
mov edx, 0x20
mov dword [esp + 0x1c], ecx
sub edx, ecx
mov dword [esp + 0x28], edx
cmp esi, 3
jne 0x644d9576
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x38]
lea ebx, [esp + 0x80]
shl edx, cl
mov dword [esp + 0x8c], edx
mov edx, 2
jmp 0x644d95d0
bsr ecx, dword [esp + 0x2c]
xor ecx, 0x1f
lea edi, [ecx + 0x60]
mov dword [esp + 0x20], edi
jmp 0x644d9f4d
mov eax, 0x20
mov dword [esp + 0x24], ecx
sub eax, ecx
mov dword [esp + 0x30], eax
cmp esi, 3
jne 0x644d9639
shl edi, cl
mov ebx, dword [esp + 0x28]
mov eax, 2
mov dword [esp + 0x7c], edi
lea edi, [esp + 0x70]
jmp 0x644d9680
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x644d97ac
jmp 0x644da27c
mov edi, dword [esp + 0x3c]
cmp edi, 1
sbb edx, edx
add dx, 0x7fff
cmp edi, 1
sbb eax, eax
mov ebx, eax
jmp 0x644d9e68
mov esi, dword [esp + 0x84]
jne 0x644da03c
mov ecx, dword [esp + 0x74]
cmp ecx, esi
ja 0x644da66b
mov ebx, dword [esp + 0x80]
jne 0x644da043
cmp dword [esp + 0x70], ebx
jbe 0x644da043
jmp 0x644d993b
movzx eax, word [esp + 0x9c]
mov ebx, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
mov edi, dword [esp + 0x98]
or ax, 0x8000
jmp 0x644d990d
xor eax, eax
mov ebx, ecx
mov edi, eax
mov esi, eax
add ebx, 4
adc esi, 0
adc edi, 0
adc eax, 0
mov dword [esp + 0x90], ebx
shr ebx, 3
mov dword [esp + 0x9c], eax
mov dword [esp + 0x98], edi
mov dword [esp + 0x94], esi
jmp 0x644da166
movzx ecx, byte [esp + 0x20]
mov edx, dword [esp + 0x9c]
shr edx, cl
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x90], edx
mov edx, 1
jmp 0x644da1a0
mov ecx, eax
and ecx, 0xf
cmp ecx, 4
je 0x644da1fe
mov ecx, dword [esp + 0x98]
mov ebx, dword [esp + 0x94]
add eax, 4
adc ebx, 0
adc ecx, 0
adc edx, 0
mov dword [esp + 0x9c], edx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x94], ebx
mov dword [esp + 0x90], eax
jmp 0x644da1fe
mov ebx, dword [esp + 0x3c]
test ebx, ebx
jne 0x644da1fe
mov ecx, dword [esp + 0x98]
mov ebx, dword [esp + 0x94]
add eax, 8
adc ebx, 0
adc ecx, 0
adc edx, 0
mov dword [esp + 0x9c], edx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x94], ebx
mov dword [esp + 0x90], eax
jmp 0x644da1fe
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x644da1fe
jmp 0x644da5a6
mov eax, dword [esp + 0x3c]
test eax, eax
jne 0x644da0f2
mov ebx, ecx
mov edi, eax
mov esi, eax
add ebx, 8
adc esi, 0
adc edi, 0
adc eax, 0
jmp 0x644da50a
mov edx, dword [esp + 0x3c]
test edx, edx
je 0x644da0f2
xor eax, eax
jmp 0x644da5fb
mov edx, dword [esp + 0x3c]
test edx, edx
jne 0x644d9d80
mov edx, edi
add ecx, 8
adc edx, 0
adc esi, 0
adc eax, 0
jmp 0x644d9d80
mov edx, dword [esp + 0x3c]
test edx, edx
je 0x644d9d80
jmp 0x644da62e
jne 0x644da065
mov edi, dword [esp + 0x70]
cmp edi, dword [esp + 0x80]
jb 0x644da065
jmp 0x644d99ab
mov esi, ecx
jmp 0x644d993b
lea edi, [esp + 0x90]
mov dword [esp + 0x2c], 1
xor esi, esi
xor eax, eax
mov dword [esp + 0x28], edi
jmp 0x644d9d9f