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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xcc
mov esi, dword [esp + 0x100]
mov eax, dword [esp + 0xf0]
mov ebx, dword [esp + 0xf4]
mov edi, dword [esp + 0xf8]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x104]
mov edx, dword [esp + 0xfc]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x108]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x10c]
fnstcw word [esp + 0x6e]
mov ecx, edx
movzx ebp, dx
mov dword [esp + 0xa0], eax
shr ecx, 0x10
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x28], ecx
mov ecx, edx
shr ecx, 0x1f
mov dword [esp + 0xa8], edi
mov byte [esp + 0x2c], cl
movzx ecx, cl
mov dword [esp + 0x34], ecx
movzx ecx, word [esp + 0x28]
mov dword [esp + 0xac], edx
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], edi
mov dword [esp + 0x7c], ebp
and cx, 0x7fff
je 0x644db438
cmp cx, 0x7fff
je 0x644db4e0
mov edx, edi
shl ebp, 3
mov dword [esp + 0x30], 0
movzx ecx, cx
shr edx, 0x1d
or ebp, 0x80000
shl edi, 3
mov dword [esp + 0x28], 0
or ebp, edx
mov edx, ebx
shl ebx, 3
shr edx, 0x1d
mov dword [esp + 0x7c], ebp
or edi, edx
mov edx, eax
shl eax, 3
shr edx, 0x1d
mov dword [esp + 0x78], edi
lea edi, [ecx - 0x3fff]
or ebx, edx
mov dword [esp + 0x70], eax
xor eax, eax
mov dword [esp + 0x74], ebx
mov edx, dword [esp + 0x1c]
mov ebp, esi
mov ebx, dword [esp + 0x24]
mov dword [esp + 0xac], esi
shr ebp, 0x10
mov ecx, dword [esp + 0x20]
mov dword [esp + 0xa8], edx
mov dword [esp + 0x88], edx
mov edx, ebp
mov ebp, esi
shr ebp, 0x1f
mov dword [esp + 0xa0], ebx
mov dword [esp + 0x80], ebx
mov ebx, ebp
mov dword [esp + 0xa4], ecx
movzx ebx, bl
mov dword [esp + 0x84], ecx
movzx ecx, si
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x38], ebx
and dx, 0x7fff
je 0x644db368
cmp dx, 0x7fff
je 0x644db208
mov esi, dword [esp + 0x1c]
shl ecx, 3
mov ebx, dword [esp + 0x1c]
movzx edx, dx
or ecx, 0x80000
lea edi, [edx + edi - 0x3fff]
shr esi, 0x1d
shl ebx, 3
or ecx, esi
mov esi, dword [esp + 0x20]
mov dword [esp + 0x8c], ecx
mov ecx, esi
shr ecx, 0x1d
or ecx, ebx
mov dword [esp + 0x88], ecx
mov ecx, esi
mov esi, dword [esp + 0x24]
shl ecx, 3
mov ebx, esi
shl esi, 3
shr ebx, 0x1d
mov dword [esp + 0x80], esi
or ecx, ebx
mov dword [esp + 0x84], ecx
xor ecx, ecx
movzx ebx, byte [esp + 0x2c]
xor ebx, ebp
movzx esi, bl
mov byte [esp + 0x1c], bl
mov dword [esp + 0x20], esi
lea esi, [edi + 1]
mov dword [esp + 0x24], esi
cmp eax, 0xf
ja case.0x644db1fa.0
jmp dword [eax*4 + 0x644e759c]
mov edx, dword [esp + 0x24]
or edx, dword [esp + 0x20]
add edi, 0x7fff
or edx, dword [esp + 0x1c]
or edx, ecx
jne 0x644db670
or eax, 2
mov ecx, 2
jmp 0x644db1d8
movzx eax, byte [esp + 0x2c]
mov byte [esp + 0x1c], al
mov eax, dword [esp + 0x34]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x30]
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
cmp ecx, 2
je 0x644db34f
cmp ecx, 3
je 0x644dc138
cmp ecx, 1
jne 0x644db59b
xor eax, eax
xor edx, edx
xor edi, edi
xor esi, esi
xor ebx, ebx
mov word [esp + 0xac], dx
movzx edx, byte [esp + 0x1c]
mov dword [esp + 0xa0], ebx
shl edx, 0xf
mov dword [esp + 0xa4], esi
or eax, edx
mov dword [esp + 0xa8], edi
mov word [esp + 0xae], ax
mov eax, dword [esp + 0x28]
mov ebp, dword [esp + 0xac]
test eax, eax
jne 0x644dbbc8
mov eax, dword [esp + 0xe0]
mov dword [eax], ebx
mov dword [eax + 4], esi
mov dword [eax + 8], edi
mov dword [eax + 0xc], ebp
add esp, 0xcc
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov eax, ebp
mov byte [esp + 0x1c], al
mov eax, dword [esp + 0x38]
mov dword [esp + 0x20], eax
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
cmp ecx, 2
jne 0x644db27a
mov eax, 0x7fff
xor edx, edx
xor edi, edi
xor esi, esi
xor ebx, ebx
jmp 0x644db296
mov edx, dword [esp + 0x24]
or edx, dword [esp + 0x20]
or edx, dword [esp + 0x1c]
or edx, ecx
je 0x644db6d8
test si, si
je 0x644dbc30
bsr esi, ecx
mov edx, 0x20
xor esi, 0x1f
mov dword [esp + 0x20], esi
sub esi, 0xc
sub edx, esi
mov dword [esp + 0x1c], esi
xor esi, esi
mov dword [esp + 0x3c], edx
mov edx, esi
mov dword [esp + 0x24], eax
lea ebx, [esp + 0x80]
mov dword [esp + 0x40], edi
neg edx
lea edx, [esp + edx*4 + 0x8c]
mov eax, dword [edx]
movzx ecx, byte [esp + 0x1c]
mov edi, dword [edx - 4]
shl eax, cl
movzx ecx, byte [esp + 0x3c]
shr edi, cl
or eax, edi
mov dword [edx + esi*4], eax
sub edx, 4
cmp edx, ebx
jne 0x644db3bd
lea ecx, [esi - 1]
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], ecx
movzx ecx, byte [esp + 0x1c]
mov edi, dword [esp + 0x40]
shl edx, cl
mov dword [esp + esi*4 + 0x80], edx
cmp dword [esp + 0x24], 0xffffffff
mov edx, dword [esp + 0x24]
je 0x644db41f
lea esi, [esi]
nop
mov dword [ebx + edx*4], 0
sub edx, 1
cmp edx, 0xffffffff
jne 0x644db410
sub edi, dword [esp + 0x20]
or dword [esp + 0x28], 2
xor ecx, ecx
lea edi, [edi - 0x3fef]
jmp 0x644db1d8
mov ecx, eax
or ecx, ebx
or ecx, edi
or ecx, ebp
je 0x644db6b8
test dx, dx
je 0x644dbbe0
bsr ebp, ebp
mov eax, 0x20
xor ebx, ebx
xor ebp, 0x1f
lea edi, [ebp - 0xc]
sub eax, edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x30], eax
mov eax, ebx
mov dword [esp + 0x38], esi
lea edi, [esp + 0x70]
neg eax
lea eax, [esp + eax*4 + 0x7c]
mov edx, dword [eax]
movzx ecx, byte [esp + 0x28]
mov esi, dword [eax - 4]
shl edx, cl
movzx ecx, byte [esp + 0x30]
shr esi, cl
or edx, esi
mov dword [eax + ebx*4], edx
sub eax, 4
cmp edi, eax
jne 0x644db479
mov edx, dword [esp + 0x70]
movzx ecx, byte [esp + 0x28]
lea eax, [ebx - 1]
mov esi, dword [esp + 0x38]
shl edx, cl
mov dword [esp + ebx*4 + 0x70], edx
jmp 0x644db4ba
mov dword [edi + eax*4], 0
sub eax, 1
cmp eax, 0xffffffff
jne 0x644db4b0
mov ecx, 0xffffc011
mov dword [esp + 0x30], 0
xor eax, eax
mov edi, ecx
mov dword [esp + 0x28], 2
sub edi, ebp
jmp 0x644db107
or eax, ebx
or eax, edi
or eax, ebp
jne 0x644db690
mov dword [esp + 0x30], 2
mov eax, 8
mov edi, 0x7fff
mov dword [esp + 0x28], 0
jmp 0x644db107
xor eax, eax
mov edx, dword [esp + 0xac]
test ebx, ebx
mov ecx, dword [esp + 0xa8]
mov ebx, dword [esp + 0xa4]
setne al
or eax, dword [esp + 0xa0]
mov dword [esp + 0x9c], edx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x94], ebx
mov dword [esp + 0x90], eax
test edx, 0x100000
je 0x644dbcc8
mov esi, ecx
mov edi, ebx
shl ebx, 0x1f
shl esi, 0x1f
shr edi, 1
or esi, edi
shr ecx, 1
mov dword [esp + 0x94], esi
mov esi, edx
shr edx, 1
mov dword [esp + 0x9c], edx
mov edx, eax
shl esi, 0x1f
and eax, 1
shr edx, 1
or ecx, esi
or ebx, edx
mov dword [esp + 0x98], ecx
or ebx, eax
mov dword [esp + 0x90], ebx
mov eax, dword [esp + 0x24]
lea ebp, [eax + 0x3fff]
test ebp, ebp
jle 0x644db710
mov esi, dword [esp + 0x94]
mov ebx, dword [esp + 0x90]
mov edx, dword [esp + 0x9c]
mov eax, esi
test bl, 7
je 0x644db5f7
movzx ecx, word [esp + 0x6e]
or dword [esp + 0x28], 0x20
and cx, 0xc00
cmp cx, 0x400
je 0x644dc0b0
cmp cx, 0x800
je 0x644dbeb8
test cx, cx
je 0x644dbef0
test edx, 0x100000
je 0x644db616
and edx, 0xffefffff
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x9c], edx
add ebp, 0x4000
mov edi, dword [esp + 0x98]
shl eax, 0x1d
shr ebx, 3
mov edx, dword [esp + 0x9c]
or ebx, eax
shr esi, 3
mov eax, edi
shr edi, 3
mov dword [esp + 0x90], ebx
shl eax, 0x1d
or esi, eax
mov eax, edx
shr edx, 3
shl eax, 0x1d
mov dword [esp + 0x94], esi
or edi, eax
mov dword [esp + 0x98], edi
cmp ebp, 0x7ffe
jg 0x644dbb30
mov eax, ebp
and ax, 0x7fff
jmp 0x644db296
mov edx, dword [esp + 0x28]
or eax, 3
mov ecx, 3
mov ebx, edx
or edx, 1
test si, si
cmovns ebx, edx
mov dword [esp + 0x28], ebx
jmp 0x644db1d8
movsx edx, dx
mov eax, 0xc
mov edi, 0x7fff
mov dword [esp + 0x30], 3
not edx
shr edx, 0x1f
mov dword [esp + 0x28], edx
jmp 0x644db107
mov dword [esp + 0x30], 1
mov eax, 4
xor edi, edi
mov dword [esp + 0x28], 0
jmp 0x644db107
or eax, 1
mov ecx, 1
jmp 0x644db1d8
or dword [esp + 0x28], 1
mov edx, 0xffff8000
xor edi, edi
xor esi, esi
mov byte [esp + 0x1c], 1
xor ebx, ebx
mov eax, 0x7fff
jmp 0x644db296
mov ecx, 1
mov ebx, ecx
sub ebx, ebp
test ebp, ebp
jne 0x644dbd20
mov ecx, dword [esp + 0x90]
mov eax, dword [esp + 0x9c]
test cl, 7
je 0x644db788
movzx edx, word [esp + 0x6e]
or dword [esp + 0x28], 0x20
mov edi, dword [esp + 0x94]
mov esi, dword [esp + 0x98]
and dx, 0xc00
cmp dx, 0x400
je 0x644dc273
cmp dx, 0x800
je 0x644dc254
test dx, dx
jne 0x644db788
mov edx, ecx
and edx, 0xf
cmp edx, 4
je 0x644db788
mov edx, edi
add ecx, 4
adc edx, 0
adc esi, 0
adc eax, 0
lea esi, [esi]
shr eax, 0x14
mov esi, ebx
lea edi, [esp + 0x90]
xor eax, 1
sar esi, 5
and eax, 1
mov dword [esp + 0x2c], eax
xor eax, eax
mov edx, 3
sub edx, esi
and ebx, 0x1f
mov dword [esp + 0x30], edx
mov dword [esp + 0x24], ebx
je 0x644dbde8
mov edx, 0x20
mov ebx, edx
mov edx, dword [esp + ebp*4 + 0x90]
sub ebx, dword [esp + 0x24]
mov ecx, ebx
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x34], ebx
shl edx, cl
or eax, edx
test ebp, ebp
je 0x644dc197
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x38], eax
mov edx, edi
lea ebp, [edi + ebx*4]
mov ebx, dword [edx + esi*4]
movzx ecx, byte [esp + 0x24]
mov eax, dword [edx + esi*4 + 4]
add edx, 4
shr ebx, cl
movzx ecx, byte [esp + 0x34]
shl eax, cl
or ebx, eax
mov dword [edx - 4], ebx
cmp ebp, edx
jne 0x644db7f0
mov edx, 4
movzx ecx, byte [esp + 0x24]
mov eax, dword [esp + 0x38]
sub edx, esi
mov esi, dword [esp + 0x9c]
shr esi, cl
mov ecx, esi
mov esi, dword [esp + 0x30]
mov dword [esp + esi*4 + 0x90], ecx
jmp 0x644dbe1a
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x8c]
mov ebx, dword [esp + 0x70]
cmp edx, eax
jbe 0x644dbcd8
mov esi, dword [esp + 0x74]
mov edi, dword [esp + 0x78]
movzx eax, byte [esp + 0x2c]
or dx, 0x8000
mov byte [esp + 0x1c], al
jmp 0x644db6fd
mov esi, dword [esp + 0x70]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x5c], edi
mul dword [esp + 0x80]
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x2c], edx
mov ebx, dword [esp + 0x80]
mov edi, dword [esp + 0x70]
mov dword [esp + 0x30], eax
mov dword [esp + 0xa0], eax
mov eax, esi
mul ecx
mov ebp, edx
mov edx, dword [esp + 0x74]
mov esi, eax
mov eax, edx
mul ebx
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x74]
mov dword [esp + 0x34], eax
mov eax, edx
mul ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x40], edx
mov dword [esp + 0x3c], eax
mov eax, edi
xor edi, edi
mul dword [esp + 0x88]
mov dword [esp + 0x48], edx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x78]
mul ebx
xor ebx, ebx
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x38]
add esi, dword [esp + 0x2c]
adc ebp, 0
adc ebx, 0
mov dword [esp + 0x2c], ecx
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
add ebx, esi
adc edx, ebp
adc ecx, edi
mov esi, ecx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0xa4], ebx
mov ebp, dword [esp + 0x40]
xor ebx, ebx
mov ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x44]
mov dword [esp + 0x34], 0
add ecx, edx
adc ebp, esi
adc ebx, 0
mov edx, dword [esp + 0x48]
xor esi, esi
mov dword [esp + 0x48], 0
add edi, ecx
adc edx, ebp
adc esi, ebx
mov ebp, dword [esp + 0x4c]
mov ecx, edi
mov ebx, esi
mov edi, ebp
mov ebp, eax
mov esi, edi
add ebp, ecx
adc esi, edx
adc ebx, dword [esp + 0x34]
mov ecx, esi
mov edi, ebx
mov esi, dword [esp + 0x7c]
mov ebx, dword [esp + 0x70]
mov dword [esp + 0x34], ebp
mov dword [esp + 0xa8], ebp
mov eax, ebx
mul dword [esp + 0x8c]
mov ebx, eax
mov ebp, edx
mov eax, esi
mul dword [esp + 0x80]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x74]
mov esi, eax
mov eax, edx
mul dword [esp + 0x88]
mov dword [esp + 0x40], edx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x78]
mul dword [esp + 0x84]
mov dword [esp + 0x44], edx
xor edx, edx
add ebx, ecx
adc ebp, edi
adc edx, 0
mov ecx, dword [esp + 0x38]
mov edi, edx
add esi, ebx
adc ecx, ebp
adc edi, dword [esp + 0x48]
mov edx, dword [esp + 0x40]
xor ebx, ebx
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x58], 0
add ebp, esi
adc edx, ecx
adc ebx, edi
mov esi, dword [esp + 0x44]
mov ecx, ebx
xor ebx, ebx
mov edi, esi
mov esi, eax
add esi, ebp
adc edi, edx
adc ebx, ecx
mov dword [esp + 0x38], esi
mov ecx, edi
mov edi, dword [esp + 0x78]
mov dword [esp + 0xac], esi
mov esi, dword [esp + 0x78]
mov eax, esi
mul dword [esp + 0x88]
mov ebp, edx
mov edx, dword [esp + 0x74]
mov esi, eax
mov eax, edx
mul dword [esp + 0x8c]
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x3c], eax
mov eax, edx
mul dword [esp + 0x84]
mov dword [esp + 0x44], eax
mov eax, edi
mov dword [esp + 0x48], edx
mul dword [esp + 0x8c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x50], edx
mul dword [esp + 0x88]
mov dword [esp + 0x54], edx
xor edx, edx
add esi, ecx
adc ebp, ebx
adc edx, 0
mov ecx, dword [esp + 0x40]
mov edi, edx
mov ebx, dword [esp + 0x3c]
xor edx, edx
add ebx, esi
adc ecx, ebp
adc edi, dword [esp + 0x58]
mov ebp, dword [esp + 0x48]
mov esi, dword [esp + 0x44]
add esi, ebx
adc ebp, ecx
adc edx, edi
xor ebx, ebx
mov ecx, ebp
mov dword [esp + 0xb0], esi
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0x4c]
add esi, ecx
adc ebp, edx
adc ebx, 0
xor ecx, ecx
mov edx, dword [esp + 0x54]
add eax, esi
adc edx, ebp
adc ecx, ebx
mov edi, edx
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x7c]
lea esi, [esp + 0xb0]
mul dword [esp + 0x8c]
add eax, edi
adc edx, ecx
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x5c]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x38]
or ebx, dword [esp + 0x30]
mov dword [esp + 0xbc], edx
or ebx, dword [esp + 0x34]
mov edx, eax
mov ecx, eax
shl edx, 0xd
or ebx, edx
lea edx, [esp + 0xa0]
mov eax, dword [edx + 0x10]
shr ecx, 0x13
add edx, 4
shl eax, 0xd
or eax, ecx
mov dword [edx - 4], eax
cmp edx, esi
je 0x644db510
mov ecx, dword [edx + 0xc]
jmp 0x644dbb09
movzx edx, word [esp + 0x6e]
and dx, 0xc00
cmp dx, 0x400
je 0x644dc0c8
cmp dx, 0x800
jne 0x644dbca0
mov edi, dword [esp + 0x20]
mov eax, edi
mov edx, edi
neg edi
neg eax
neg edx
mov ebx, edi
add ax, 0x7fff
lea esi, [esi]
or dword [esp + 0x28], 0x28
mov edi, ebx
mov esi, ebx
and ax, 0x7fff
mov word [esp + 0xac], dx
movzx ecx, byte [esp + 0x1c]
mov edx, eax
movzx eax, word [esp + 0xae]
mov dword [esp + 0xa0], ebx
shl ecx, 7
mov dword [esp + 0xa4], esi
and ax, 0x8000
mov dword [esp + 0xa8], edi
or eax, edx
mov word [esp + 0xae], ax
movzx eax, ah
and eax, 0x7f
or eax, ecx
mov byte [esp + 0xaf], al
mov ebp, dword [esp + 0xac]
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.644d6e20
jmp 0x644db2d8
test edi, edi
jne 0x644dbdc0
test ebx, ebx
je 0x644dbff0
bsr ebx, ebx
xor ebx, 0x1f
lea ebp, [ebx + 0x40]
lea ecx, [ebp - 0xc]
mov ebx, ecx
sar ebx, 5
and ecx, 0x1f
jne 0x644dc04c
mov eax, ebx
lea edi, [esp + 0x70]
lea edx, [esp + 0x60]
neg eax
lea eax, [edi + eax*4]
mov ecx, dword [eax + 0xc]
mov dword [eax + ebx*4 + 0xc], ecx
sub eax, 4
cmp edx, eax
jne 0x644dbc19
lea eax, [ebx - 1]
jmp 0x644db4ba
mov esi, dword [esp + 0x1c]
test esi, esi
jne 0x644dbdd0
mov esi, dword [esp + 0x20]
test esi, esi
je 0x644dc038
bsr ecx, esi
xor ecx, 0x1f
lea esi, [ecx + 0x40]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x20]
lea ecx, [esi - 0xc]
mov esi, ecx
sar esi, 5
and ecx, 0x1f
jne 0x644dbffe
mov edx, esi
mov dword [esp + 0x1c], eax
lea ebx, [esp + 0x80]
lea ecx, [esp + 0x70]
neg edx
lea edx, [ebx + edx*4]
mov eax, dword [edx + 0xc]
mov dword [edx + esi*4 + 0xc], eax
sub edx, 4
cmp edx, ecx
jne 0x644dbc80
sub esi, 1
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x24], esi
jmp 0x644db400
mov eax, 0x7fff
xor ebx, ebx
test dx, dx
je 0x644dbb68
mov eax, 0x7ffe
mov edx, 0xffffffff
mov ebx, 0xffffffff
jmp 0x644dbb68
mov dword [esp + 0x24], edi
jmp 0x644db59b
mov edi, dword [esp + 0x88]
je 0x644dbf30
mov esi, dword [esp + 0x84]
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x20], ecx
cmp ecx, ebx
je 0x644dc080
mov edx, eax
mov eax, ebp
mov ebx, dword [esp + 0x20]
mov byte [esp + 0x1c], al
or dx, 0x8000
jmp 0x644db6fd
cmp ebx, 0x74
jle 0x644dbf4b
mov ebx, dword [esp + 0x90]
or ebx, dword [esp + 0x94]
or ebx, dword [esp + 0x98]
or ebx, dword [esp + 0x9c]
je 0x644dbea8
movzx eax, word [esp + 0x6e]
or dword [esp + 0x28], 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 0x644dc2a4
cmp ax, 0x800
je 0x644dc281
test ax, ax
je 0x644dc15f
xor edx, edx
xor edi, edi
xor esi, esi
xor ebx, ebx
or dword [esp + 0x28], 0x10
xor eax, eax
jmp 0x644dbb71
bsr edi, edi
xor edi, 0x1f
lea ebp, [edi + 0x20]
jmp 0x644dbbf9
bsr ecx, esi
xor ecx, 0x1f
lea esi, [ecx + 0x20]
mov dword [esp + 0x20], esi
jmp 0x644dbc55
mov ebp, dword [esp + 0x30]
lea ecx, [edi + esi*4]
xor edx, edx
mov ebx, dword [ecx + edx*4]
mov dword [edi + edx*4], ebx
add edx, 1
cmp edx, ebp
jle 0x644dbdf1
mov edx, 4
sub edx, esi
jmp 0x644dbe1a
mov dword [edi + edx*4], 0
add edx, 1
cmp edx, 4
jne 0x644dbe10
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 0x644dbe6e
movzx ecx, word [esp + 0x6e]
or dword [esp + 0x28], 0x20
and cx, 0xc00
cmp cx, 0x400
je 0x644dc246
cmp cx, 0x800
je 0x644dc1ff
test cx, cx
je 0x644dc1b6
and edx, 0x80000
je 0x644dbf80
mov ebp, dword [esp + 0x2c]
or dword [esp + 0x28], 0x20
mov eax, 1
xor edx, edx
xor edi, edi
xor esi, esi
xor ebx, ebx
test ebp, ebp
je 0x644dbb71
or dword [esp + 0x28], 0x10
jmp 0x644dbb71
xor edi, edi
xor esi, esi
xor edx, edx
jmp 0x644dbdaa
mov edi, dword [esp + 0x20]
test edi, edi
jne 0x644db5f7
mov eax, dword [esp + 0x98]
add ebx, 8
adc esi, 0
adc eax, 0
adc edx, 0
mov dword [esp + 0x98], eax
mov eax, esi
mov dword [esp + 0x9c], edx
jmp 0x644db5f7
mov ecx, ebx
and ecx, 0xf
cmp ecx, 4
je 0x644db5f7
mov eax, dword [esp + 0x98]
add ebx, 4
adc esi, 0
adc eax, 0
adc edx, 0
mov dword [esp + 0x98], eax
mov eax, esi
mov dword [esp + 0x9c], edx
jmp 0x644db5f7
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x24], ecx
cmp ecx, edi
jbe 0x644dc0e1
mov esi, dword [esp + 0x74]
mov edi, ecx
jmp 0x644db85f
mov ebp, ebx
sar ebp, 5
je 0x644dc2bd
lea edi, [esp + 0x90]
xor eax, eax
mov edx, edi
lea ecx, [edi + ebp*4]
or eax, dword [edx]
add edx, 4
cmp ecx, edx
jne 0x644dbf64
mov dword [esp + 0x2c], 1
mov esi, ebp
jmp 0x644db7a3
mov eax, edi
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 0x644dbf89
mov edx, dword [esp + 0x9c]
mov ecx, dword [esp + 0x2c]
xor eax, eax
mov ebx, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
mov edi, dword [esp + 0x98]
shr edx, 3
test ecx, ecx
je 0x644db296
test byte [esp + 0x28], 0x20
jne 0x644dbe98
test byte [esp + 0x6e], 0x10
jne 0x644db296
jmp 0x644dbe98
bsr ebp, eax
xor ebp, 0x1f
add ebp, 0x60
jmp 0x644dbbf9
mov edx, 0x20
mov dword [esp + 0x1c], ecx
sub edx, ecx
mov dword [esp + 0x3c], edx
cmp esi, 3
jne 0x644db3a3
mov edx, dword [esp + 0x24]
lea ebx, [esp + 0x80]
shl edx, cl
mov dword [esp + 0x8c], edx
mov edx, 2
jmp 0x644db410
bsr ecx, dword [esp + 0x24]
xor ecx, 0x1f
lea esi, [ecx + 0x60]
mov dword [esp + 0x20], esi
jmp 0x644dbc55
mov edx, 0x20
mov dword [esp + 0x28], ecx
sub edx, ecx
mov dword [esp + 0x30], edx
cmp ebx, 3
jne 0x644db469
shl eax, cl
lea edi, [esp + 0x70]
mov dword [esp + 0x7c], eax
mov eax, 2
jmp 0x644db4b0
mov ecx, dword [esp + 0x1c]
cmp dword [esp + 0x74], ecx
jne 0x644dbd03
mov esi, dword [esp + 0x78]
mov ecx, esi
cmp edx, eax
jne 0x644dc0a0
cmp esi, edi
je 0x644dc127
mov esi, dword [esp + 0x1c]
jmp 0x644dbd03
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x644db5f7
jmp 0x644dbec4
mov edi, dword [esp + 0x20]
cmp edi, 1
sbb eax, eax
add ax, 0x7fff
cmp edi, 1
sbb edx, edx
mov ebx, edx
jmp 0x644dbb68
mov esi, dword [esp + 0x84]
mov dword [esp + 0x1c], esi
jne 0x644dbcf0
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x1c], ecx
cmp ecx, esi
ja 0x644dc2b4
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x20], ecx
jne 0x644dbd03
cmp ecx, ebx
jb 0x644db85f
jne 0x644dbd03
mov eax, dword [esp + 0x24]
mov ecx, eax
mov esi, dword [esp + 0x1c]
mov edi, ecx
jmp 0x644db85f
movzx edx, word [esp + 0x9c]
mov ebx, dword [esp + 0x90]
mov esi, dword [esp + 0x94]
mov edi, dword [esp + 0x98]
or dx, 0x8000
jmp 0x644db6fd
xor edx, edx
mov ebx, ecx
mov edi, edx
mov esi, edx
add ebx, 4
adc esi, 0
adc edi, 0
adc edx, 0
mov dword [esp + 0x90], ebx
shr ebx, 3
mov dword [esp + 0x9c], edx
mov dword [esp + 0x98], edi
mov dword [esp + 0x94], esi
jmp 0x644dbdaa
mov edx, dword [esp + 0x9c]
movzx ecx, byte [esp + 0x24]
shr edx, cl
mov dword [esp + 0x90], edx
mov edx, 1
jmp 0x644dbe10
mov ecx, eax
and ecx, 0xf
cmp ecx, 4
je 0x644dbe6e
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 0x644dbe6e
mov ebx, dword [esp + 0x20]
test ebx, ebx
jne 0x644dbe6e
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 0x644dbe6e
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x644dbe6e
jmp 0x644dc20b
mov edx, dword [esp + 0x20]
test edx, edx
jne 0x644db788
mov edx, edi
add ecx, 8
adc edx, 0
adc esi, 0
adc eax, 0
jmp 0x644db788
mov edx, dword [esp + 0x20]
test edx, edx
je 0x644db788
jmp 0x644dc260
mov edx, dword [esp + 0x20]
test edx, edx
jne 0x644dbda2
mov ebx, ecx
mov edi, edx
mov esi, edx
add ebx, 8
adc esi, 0
adc edi, 0
adc edx, 0
jmp 0x644dc173
mov edx, dword [esp + 0x20]
test edx, edx
je 0x644dbda2
xor edx, edx
jmp 0x644dc28d
mov esi, dword [esp + 0x1c]
jmp 0x644db85f
mov dword [esp + 0x2c], 1
xor esi, esi
xor eax, eax
lea edi, [esp + 0x90]
jmp 0x644db7a3