Function at 0x10009371
Capabilities:
Compute adler32 checksum
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xcc
mov edi, ecx
mov esi, dword [esp + 0xec]
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xe0]
cmp eax, dword [esp + 0xe4]
jae 0x100093ab
xor eax, eax
mov dword [esi], eax
mov dword [ecx], eax
mov esi, 0xfffffffd
jmp 0x1000a529
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov dword [esp], ecx
mov ecx, dword [edi + 0x38]
mov dword [esp + 0xc], ecx
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x20], ecx
mov ebx, dword [edi + 0x3c]
mov ecx, dword [edi + 0x24]
mov dword [esp + 0x14], ecx
mov ecx, dword [edi + 0x28]
mov dword [esp + 0x24], ecx
cmp eax, 0x35
mov dword [esp + 4], edi
mov dword [esp + 0x28], edx
mov dword [esp + 0x34], ebx
ja case.0x10009404.4
mov ecx, dword [esp + 0xe0]
mov ecx, dword [ecx]
lea edi, [edx + ecx]
mov dword [esp + 0x1c], edi
mov esi, dword [esi]
add esi, dword [esp + 0xe8]
mov dword [esp + 0x2c], esi
jmp dword [eax*4 + 0x10015bbc]
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
xor ecx, ecx
dec ecx
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x14]
mov dword [edx], eax
cmp esi, dword [esp + 0x28]
jbe 0x1000945e
mov edi, esi
mov esi, dword [esp]
cmp esi, 8
jb 0x1000945c
add esi, 0xfffffff8
mov eax, esi
shr eax, 3
mov ecx, dword [esp + 0x28]
not ecx
add ecx, edi
cmp eax, ecx
cmovb ecx, eax
mov eax, ecx
not eax
add edi, eax
shl ecx, 3
sub esi, ecx
mov dword [esp], esi
mov esi, edi
mov edx, dword [esp + 4]
jmp 0x1000a38d
mov eax, dword [esp + 0xe8]
mov dword [esp + 8], eax
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x14]
jmp 0x1000a2a0
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x14]
jmp 0x1000a82e
mov dword [esp + 0x10], 0
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
jmp 0x1000941f
mov eax, dword [esp + 0xe8]
mov dword [esp + 8], eax
mov esi, edx
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
jmp 0x1000aa17
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov ebx, dword [esp + 0x14]
jmp 0x10009a37
mov eax, dword [esp + 0xe8]
mov dword [esp + 8], eax
mov esi, edx
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x14]
jmp 0x1000a95e
mov esi, edx
jmp 0x100096a1
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov ecx, dword [esp]
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x14]
jmp 0x10009937
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0x1c]
jmp 0x1000a736
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov ecx, dword [esp]
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x14]
jmp 0x10009978
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x14]
jmp 0x1000ab73
test ecx, ecx
jle 0x100098c2
mov eax, dword [esp + 0x28]
lea esi, [eax + 1]
add dword [esp], 8
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x14]
mov eax, esi
mov esi, dword [esp]
and esi, 0xfffffff8
mov edi, eax
cmp eax, dword [esp + 0x28]
jbe 0x100095d0
test esi, esi
je 0x100095d0
add esi, 0xfffffff8
mov eax, esi
shr eax, 3
mov ecx, dword [esp + 0x28]
not ecx
add ecx, edi
cmp eax, ecx
cmovb ecx, eax
mov eax, ecx
not eax
add edi, eax
shl ecx, 3
sub esi, ecx
test esi, esi
jne 0x10009922
mov dword [esp + 0xc], 0
mov eax, 0x22
mov dword [esp], 0
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0xf0]
test cl, 1
mov ebp, 0
mov esi, edi
je 0x10009427
jmp 0x100099b9
xor eax, eax
mov esi, dword [esp + 4]
mov dword [esi + 0xc], eax
mov dword [esp + 0xc], 0
mov dword [esi + 8], eax
xor eax, eax
inc eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x10], eax
mov dword [esp + 0x24], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x20], 0
mov dword [esp], 0
mov eax, dword [esp + 0xf0]
test al, 1
jne case.0x10009404.1
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, dword [esp + 0x28]
mov dword [esp + 0x24], 0
xor ecx, ecx
mov dword [esp + 0x20], 0
mov dword [esp], 0
mov edx, dword [esp + 4]
jmp 0x10009a87
test ecx, ecx
jle 0x100098aa
mov eax, dword [esp + 0x28]
lea esi, [eax + 1]
movzx eax, byte [eax]
mov ecx, dword [esp + 4]
mov dword [ecx + 8], eax
cmp esi, dword [esp + 0x1c]
jae 0x1000987d
mov eax, dword [esp + 4]
mov ecx, esi
movzx esi, byte [esi]
inc ecx
mov dword [esp + 0x18], ecx
mov dword [eax + 0xc], esi
mov edi, dword [eax + 8]
mov ecx, edi
shl ecx, 8
or ecx, esi
mov edx, 0x8421085
mov eax, ecx
mul edx
and edi, 0xf
xor ebx, ebx
inc ebx
mov eax, 0x24
cmp edi, 8
jne 0x10009912
mov edi, ecx
sub edi, edx
shr edi, 1
add edi, edx
shr edi, 4
mov edx, edi
shl edx, 5
sub edi, edx
add edi, ecx
and esi, 0x20
xor ecx, ecx
or esi, edi
mov edx, dword [esp + 0xe8]
mov dword [esp + 8], edx
mov edx, 0xffffffff
mov dword [esp + 0x10], edx
mov edx, dword [esp + 4]
mov esi, dword [esp + 0x18]
je 0x10009a87
jmp 0x10009427
xor eax, eax
dec eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 8], eax
mov esi, edx
mov edx, dword [esp + 4]
jmp 0x10009909
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
jmp 0x10009c19
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
jmp 0x10009da0
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x14]
jmp 0x10009a8f
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x14]
jmp 0x10009ce2
test ecx, ecx
jle 0x100098da
mov edx, dword [esp + 0x28]
movzx eax, byte [edx]
mov ebx, dword [esp]
mov ecx, ebx
shl eax, cl
lea esi, [edx + 1]
or dword [esp + 0xc], eax
add ebx, 8
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov edx, dword [esp + 4]
jmp 0x10009ad3
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov ebx, dword [esp + 0x14]
jmp 0x10009c54
mov eax, dword [esp + 0xe8]
mov dword [esp + 8], eax
mov esi, edx
mov edi, dword [esp + 4]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
jmp 0x1000a1e9
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov ebx, dword [esp + 0x14]
jmp 0x10009e3c
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x14]
jmp 0x1000a7d9
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp]
jmp 0x100099ce
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
mov esi, edx
mov edx, dword [esp + 4]
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
jmp 0x10009dae
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov edx, dword [esp + 4]
mov dword [edx], 2
lea eax, [eax + eax*4]
add eax, 0xfffffffc
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 8], eax
jmp 0x10009909
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov edx, dword [esp + 4]
mov dword [edx], 1
jmp 0x100098f0
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov edx, dword [esp + 4]
mov dword [edx], 0x20
jmp 0x100098f0
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov edx, dword [esp + 4]
mov dword [edx], 5
lea eax, [eax + eax*4]
add eax, 0xfffffffc
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 8], eax
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x14]
jmp 0x1000a38d
mov edi, dword [esp + 0xe8]
mov dword [esp + 8], edi
jmp 0x1000a176
push 0x13dd
push str.src_compat_dvfs_stb_zip_v221.h
push str._num_bits
call dword [sym.imp.msvcrt.dll__assert]
mov dword [esp], ecx
cmp esi, dword [esp + 0x1c]
jae 0x1000995f
movzx eax, byte [esi]
inc esi
mov ecx, dword [esp]
shl eax, cl
or dword [esp + 0xc], eax
lea eax, [ecx + 8]
cmp ecx, 0xfffffff7
mov dword [esp], eax
ja 0x1000993a
mov ecx, eax
jmp 0x10009bd7
mov ecx, edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [edx], 6
jmp 0x10009d81
mov dword [esp], ecx
cmp esi, dword [esp + 0x1c]
jae 0x100099a0
movzx eax, byte [esi]
inc esi
mov ecx, dword [esp]
shl eax, cl
or dword [esp + 0xc], eax
lea eax, [ecx + 8]
cmp ecx, 0xfffffff7
mov dword [esp], eax
ja 0x1000997b
mov ecx, eax
jmp 0x10009c8a
mov ecx, edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [edx], 0x33
jmp 0x10009d81
cmp ebp, 3
ja 0x10009a58
mov ecx, dword [esp]
test ecx, ecx
je 0x10009a2e
cmp ecx, 7
ja 0x100099f5
mov edx, dword [esp + 4]
mov edi, dword [esp + 0xf0]
cmp esi, dword [esp + 0x1c]
jae 0x10009a0d
movzx eax, byte [esi]
inc esi
shl eax, cl
or dword [esp + 0xc], eax
lea eax, [ecx + 8]
cmp ecx, 0xfffffff7
mov ecx, eax
ja 0x100099d9
mov ecx, eax
mov ebx, dword [esp + 0xc]
movzx eax, bl
shr ebx, 8
mov dword [esp + 0xc], ebx
add ecx, 0xfffffff8
mov dword [esp], ecx
mov ebx, ebp
jmp 0x10009a41
mov dword [esp], ecx
mov eax, edi
and eax, 2
shr eax, 1
mov dword [edx], 0x29
lea eax, [eax + eax*4]
add eax, 0xfffffffc
mov dword [esp + 0x10], eax
mov ebx, ebp
jmp 0x1000a38d
mov ebx, ebp
mov dword [esp], 0
cmp esi, dword [esp + 0x1c]
jae 0x10009a6c
movzx eax, byte [esi]
inc esi
mov edx, dword [esp + 4]
mov ecx, dword [edx + 0x10]
shl ecx, 8
or ecx, eax
mov dword [edx + 0x10], ecx
inc ebx
mov ebp, ebx
jmp 0x100099b9
mov dword [esp + 0x10], 0
mov eax, 0x22
mov ebx, ebp
jmp 0x1000ab3e
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov edx, dword [esp + 4]
mov dword [edx], 0x2a
jmp 0x10009d81
mov ebx, ecx
cmp dword [esp], 2
ja 0x10009aad
cmp esi, dword [esp + 0x1c]
jae 0x10009ae9
movzx eax, byte [esi]
mov ecx, dword [esp]
shl eax, cl
inc esi
or dword [esp + 0xc], eax
add ecx, 8
mov dword [esp], ecx
cmp ecx, 3
jb 0x10009a8f
mov eax, dword [esp + 0xc]
mov ecx, eax
and ecx, 7
mov dword [edx + 0x14], ecx
shr eax, 3
mov dword [esp + 0xc], eax
add dword [esp], 0xfffffffd
mov eax, ecx
shr eax, 1
mov dword [edx + 0x18], eax
cmp ecx, 2
jae 0x10009b02
mov ebx, dword [esp]
mov ecx, ebx
and cl, 7
shr dword [esp + 0xc], cl
and ebx, 0xfffffff8
mov dword [esp], ebx
xor ebx, ebx
jmp 0x10009bc2
mov ecx, edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [edx], 3
jmp 0x10009d81
cmp eax, 1
je 0x10009b1b
cmp eax, 3
je 0x10009bb1
xor ebx, ebx
mov edi, dword [esp + 0xc]
jmp 0x10009ccb
lea eax, [edx + 0x40]
mov dword [edx + 0x2c], 0x120
mov dword [edx + 0x30], 0x20
movaps xmm0, xmmword [0x10014100]
movups xmmword [edx + 0xde0], xmm0
movups xmmword [edx + 0xdf0], xmm0
push 0x90
push 8
push eax
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0x10]
add esp, 0xc
movaps xmm0, xmmword [str._t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_b_b_b_b_b_b_b_b__s__d__s__s_]
movups xmmword [edx + 0xd0], xmm0
movups xmmword [edx + 0xe0], xmm0
movups xmmword [edx + 0xf0], xmm0
movups xmmword [edx + 0x100], xmm0
movups xmmword [edx + 0x110], xmm0
movups xmmword [edx + 0x120], xmm0
movups xmmword [edx + 0x130], xmm0
movaps xmm0, xmmword [0x10014120]
movups xmmword [edx + 0x140], xmm0
movaps xmm0, xmmword [0x10014130]
movups xmmword [edx + 0x150], xmm0
xor eax, eax
inc eax
jmp 0x10009ea9
mov eax, 0xa
xor ecx, ecx
dec ecx
mov dword [esp + 0x10], ecx
jmp 0x1000ab3e
cmp ebx, 3
ja 0x10009bf1
mov ecx, dword [esp]
test ecx, ecx
je 0x10009c0e
cmp ecx, 7
jbe 0x10009937
mov eax, dword [esp + 0xc]
mov byte [edx + ebx + 0x2920], al
shr eax, 8
mov dword [esp + 0xc], eax
add ecx, 0xfffffff8
mov dword [esp], ecx
jmp 0x10009c27
movzx ebx, word [edx + 0x2920]
movzx eax, word [edx + 0x2922]
xor eax, ebx
cmp eax, 0xffff
jne 0x10009c43
mov eax, dword [esp + 0x20]
jmp 0x10009c72
mov dword [esp], 0
mov eax, dword [esp + 0x1c]
cmp esi, eax
jae 0x10009c2a
mov al, byte [esi]
inc esi
mov byte [edx + ebx + 0x2920], al
inc ebx
jmp 0x10009bc2
mov ecx, edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [edx], 7
jmp 0x10009d81
mov eax, 0x27
xor ecx, ecx
dec ecx
mov dword [esp + 0x10], ecx
jmp 0x10009427
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 4]
jae 0x10009cb9
mov ecx, dword [esp + 8]
mov byte [ecx], al
inc ecx
mov dword [esp + 8], ecx
dec ebx
test ebx, ebx
je 0x10009ca8
mov ecx, dword [esp]
test ecx, ecx
je 0x10009ca8
mov dword [esp + 0x20], eax
cmp ecx, 7
jbe 0x10009978
mov eax, dword [esp + 0xc]
mov edi, esi
movzx esi, al
mov dword [esp + 0x20], esi
mov esi, edi
shr eax, 8
mov dword [esp + 0xc], eax
add ecx, 0xfffffff8
mov dword [esp], ecx
jmp 0x10009c54
mov edi, dword [esp + 8]
mov dword [esp + 0x18], esi
mov ecx, dword [esp + 0x1c]
jmp 0x10009d90
mov dword [esp + 0x10], 2
mov eax, 0x34
jmp 0x10009427
cmp ebx, 2
ja 0x10009d5a
mov cl, byte [ebx + 0x100158dc]
movsx ebp, cl
cmp dword [esp], ebp
jae 0x10009d0e
cmp esi, dword [esp + 0x1c]
jae 0x10009d3e
movzx eax, byte [esi]
inc esi
mov ecx, dword [esp]
shl eax, cl
or edi, eax
add ecx, 8
mov al, byte [ebx + 0x100158dc]
mov edx, esi
mov esi, ebx
movsx ebp, al
mov dword [esp], ecx
cmp ecx, ebp
mov esi, edx
jb 0x10009ce2
mov ecx, eax
mov dword [esp + 0xc], edi
xor edx, edx
dec edx
mov eax, ebp
shl edx, cl
not edx
and edx, dword [esp + 0xc]
sub dword [esp], ebp
mov ecx, eax
shr dword [esp + 0xc], cl
add edx, dword [ebx*4 + 0x100158d0]
mov eax, dword [esp + 4]
mov dword [eax + ebx*4 + 0x2c], edx
mov edi, dword [esp + 0xc]
inc ebx
jmp 0x10009ccb
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov edx, dword [esp + 4]
mov dword [edx], 0xb
jmp 0x10009d81
mov dword [esp + 0xc], edi
mov ebx, dword [esp + 4]
lea eax, [ebx + 0x1b80]
push 0x120
push 0
push eax
call sub.msvcrt.dll_memset
mov edx, ebx
add esp, 0xc
xor ebx, ebx
jmp 0x10009e31
lea eax, [eax + eax*4]
add eax, 0xfffffffc
mov dword [esp + 0x10], eax
jmp 0x1000a38d
test ebx, ebx
je 0x10009def
mov dword [esp + 0x20], eax
mov esi, dword [esp + 0x18]
mov dword [esp + 8], edi
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x2c]
mov edx, dword [esp + 4]
jae 0x10009e1f
cmp esi, ecx
jae 0x10009e06
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 8]
sub eax, edx
mov ebp, edx
mov edi, esi
mov esi, ecx
sub esi, edi
cmp eax, esi
cmovb esi, eax
cmp esi, ebx
cmovae esi, ebx
push esi
push edi
push edx
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x28]
add esp, 0xc
add edi, esi
mov dword [esp + 0x18], edi
add ebp, esi
mov edi, ebp
sub ebx, esi
mov eax, dword [esp + 0x20]
jmp 0x10009d90
mov dword [esp + 0x20], eax
xor ecx, ecx
mov edx, dword [esp + 4]
mov esi, dword [esp + 0x18]
mov dword [esp + 8], edi
jmp 0x1000a7c8
mov ecx, edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [edx], 0x26
jmp 0x10009d81
mov dword [esp + 0x10], 2
mov eax, 9
jmp 0x10009427
cmp ebx, dword [edx + 0x34]
jae 0x10009e9f
cmp dword [esp], 2
ja 0x10009e60
mov edx, dword [esp + 0x1c]
cmp esi, edx
jae 0x10009e84
movzx eax, byte [esi]
mov ecx, dword [esp]
shl eax, cl
inc esi
or dword [esp + 0xc], eax
add ecx, 8
mov dword [esp], ecx
cmp ecx, 3
jb 0x10009e40
mov edx, dword [esp + 4]
mov eax, dword [esp + 0xc]
mov edi, eax
shr edi, 3
add dword [esp], 0xfffffffd
and al, 7
movzx ecx, byte [ebx + 0x100158bc]
mov byte [edx + ecx + 0x1b80], al
inc ebx
mov dword [esp + 0xc], edi
jmp 0x10009e31
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov edx, dword [esp + 4]
mov dword [edx], 0xe
jmp 0x10009d81
mov dword [edx + 0x34], 0x13
mov eax, dword [edx + 0x18]
test eax, eax
js 0x1000a536
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], esi
imul eax, eax, 0xda0
lea ebx, [edx + eax]
add ebx, 0x40
xorps xmm0, xmm0
movups xmmword [esp + 0x78], xmm0
movups xmmword [esp + 0x68], xmm0
movups xmmword [esp + 0x58], xmm0
movups xmmword [esp + 0x48], xmm0
mov dword [esp + 0x30], eax
lea eax, [edx + eax + 0x160]
push 0xc80
push 0
push eax
mov esi, edx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esi + 0x18]
mov dword [esp + 0x38], eax
mov eax, dword [esi + eax*4 + 0x2c]
mov edx, ebx
mov ebx, eax
test eax, eax
je 0x10009f1b
xor eax, eax
movzx ecx, byte [edx + eax]
inc dword [esp + ecx*4 + 0x48]
inc eax
cmp ebx, eax
jne 0x10009f0e
mov dword [esp + 0x44], edx
xor ecx, ecx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x88], ecx
xor edx, edx
xor eax, eax
mov esi, dword [esp + ecx*4 + 0x4c]
add eax, esi
add edx, esi
add edx, edx
mov dword [esp + ecx*4 + 0x90], edx
inc ecx
cmp ecx, 0xf
jne 0x10009f33
cmp edx, 0x10000
je 0x10009f5b
cmp eax, 1
ja 0x1000a096
mov dword [esp + 0x40], ebx
test ebx, ebx
mov esi, dword [esp + 4]
mov ecx, dword [esp + 0x30]
je 0x1000a081
lea eax, [ecx + esi]
add eax, 0x160
mov dword [esp + 0x3c], eax
xor ebx, ebx
dec ebx
xor edx, edx
add ecx, esi
mov dword [esp + 0x30], ecx
mov eax, dword [esp + 0x44]
mov dword [esp + 0x10], edx
movzx edx, byte [eax + edx]
test edx, edx
je 0x10009fed
mov eax, dword [esp + edx*4 + 0x88]
lea ecx, [eax + 1]
mov dword [esp + edx*4 + 0x88], ecx
xor edi, edi
mov ecx, edx
mov esi, edi
mov edi, eax
and edi, 1
lea edi, [edi + esi*2]
shr eax, 1
dec ecx
jne 0x10009fab
cmp dl, 0xa
ja 0x10009ff6
cmp edi, 0x3ff
ja 0x10009fe9
mov eax, edx
shl eax, 9
or eax, dword [esp + 0x10]
xor esi, esi
inc esi
mov ecx, edx
shl esi, cl
mov ecx, dword [esp + 0x3c]
mov word [ecx + edi*2], ax
add edi, esi
cmp edi, 0x400
jb 0x10009fdb
mov esi, dword [esp + 4]
mov edx, dword [esp + 0x10]
jmp 0x1000a076
and edi, 0x3ff
mov ecx, dword [esp + 0x30]
movsx eax, word [ecx + edi*2 + 0x160]
test eax, eax
jne 0x1000a020
lea eax, [ecx + edi*2]
add eax, 0x160
mov word [eax], bx
mov eax, ebx
add ebx, 0xfffffffe
mov ecx, dword [esp + 0x30]
add esi, esi
shr esi, 9
cmp edx, 0xb
jne 0x1000a02e
mov edi, eax
jmp 0x1000a05d
not eax
bt esi, 1
adc eax, 0
movsx edi, word [ecx + eax*2 + 0x960]
test edi, edi
jne 0x1000a053
lea eax, [ecx + eax*2]
add eax, 0x960
mov word [eax], bx
mov edi, ebx
add ebx, 0xfffffffe
shr esi, 1
dec edx
mov eax, edi
cmp edx, 0xb
ja 0x1000a02e
not edi
bt esi, 1
adc edi, 0
mov edx, dword [esp + 0x10]
mov word [ecx + edi*2 + 0x960], dx
mov esi, dword [esp + 4]
inc edx
cmp edx, dword [esp + 0x40]
jne 0x10009f86
xor ecx, ecx
mov eax, dword [esp + 0x38]
cmp eax, 2
mov ebx, dword [esp + 0x14]
jne 0x1000a123
jmp 0x1000a0af
mov eax, 0x23
xor ecx, ecx
dec ecx
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 4]
mov esi, dword [esp + 0x18]
jmp 0x10009423
mov ebx, dword [esi + 0x2c]
mov edi, dword [esi + 0x30]
lea eax, [edi + ebx]
cmp ecx, eax
jae 0x1000a0e4
mov ebx, dword [esp]
cmp ebx, 0xe
ja 0x1000a132
mov edx, dword [esp + 0x1c]
mov eax, edx
mov esi, dword [esp + 0x18]
sub eax, esi
cmp eax, 1
jg 0x1000a141
mov ebx, ecx
mov edi, dword [esp + 4]
mov esi, dword [esp + 0x18]
jmp 0x1000a18a
jne 0x1000a16f
mov esi, dword [esp + 4]
lea eax, [esi + 0x40]
mov ebp, ecx
lea ecx, [esi + 0x2924]
push ebx
push ecx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
lea eax, [esi + 0xde0]
lea ecx, [esi + ebx]
add ecx, 0x2924
push edi
push ecx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x18]
mov ebx, ebp
dec eax
mov dword [esi + 0x18], eax
mov edx, esi
mov esi, dword [esp + 0x18]
jmp 0x10009ea9
mov ebx, ecx
mov edi, dword [esp + 4]
mov esi, dword [esp + 0x18]
jmp 0x1000a209
movzx eax, byte [esi]
mov edi, ecx
mov ecx, ebx
shl eax, cl
movzx edx, byte [esi + 1]
add cl, 8
shl edx, cl
or edx, eax
or dword [esp + 0xc], edx
add esi, 2
or ebx, 0x10
mov dword [esp], ebx
mov ebx, edi
mov eax, esi
mov edi, dword [esp + 4]
jmp 0x1000a209
mov eax, 0x15
mov ebx, ecx
xor ecx, ecx
dec ecx
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 4]
mov esi, dword [esp + 0x18]
jmp 0x10009427
mov eax, dword [esp + 0xc]
and eax, 0x3ff
movsx eax, word [edi + eax*2 + 0x1ca0]
test eax, eax
js 0x1000a1b4
movzx ecx, ax
cmp ecx, 0x200
jb 0x1000a1e9
shr eax, 9
cmp dword [esp], eax
jae 0x1000a209
jmp 0x1000a1e9
cmp dword [esp], 0xb
jb 0x1000a1e9
mov ecx, 0xa
not eax
mov edx, dword [esp + 0xc]
bt edx, ecx
adc eax, 0
movsx eax, word [edi + eax*2 + 0x24a0]
test eax, eax
jns 0x1000a1e0
lea edx, [ecx + 2]
inc ecx
cmp dword [esp], edx
jae 0x1000a1bf
test ax, ax
mov edx, dword [esp + 0x1c]
jns 0x1000a209
cmp esi, edx
jae 0x1000a359
movzx eax, byte [esi]
mov ecx, dword [esp]
shl eax, cl
inc esi
or dword [esp + 0xc], eax
add ecx, 8
mov dword [esp], ecx
cmp ecx, 0xf
jb 0x1000a18a
mov dword [esp + 0x18], esi
mov eax, dword [esp + 0xc]
and eax, 0x3ff
movsx esi, word [edi + eax*2 + 0x1ca0]
test esi, esi
js 0x1000a233
mov ecx, esi
shr ecx, 9
and esi, 0x1ff
mov edi, dword [esp + 0xc]
jmp 0x1000a259
mov eax, 0xa
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 4]
not esi
bt edi, eax
adc esi, 0
lea ecx, [eax + 1]
movsx esi, word [edx + esi*2 + 0x24a0]
mov eax, ecx
test esi, esi
js 0x1000a240
shr edi, cl
mov dword [esp + 0xc], edi
sub dword [esp], ecx
cmp esi, 0xf
mov eax, esi
ja 0x1000a280
mov dword [esp + 0x20], eax
mov esi, dword [esp + 4]
mov byte [esi + ebx + 0x2924], al
inc ebx
mov ecx, ebx
jmp 0x1000a0af
cmp eax, 0x10
jne 0x1000a28d
test ebx, ebx
je 0x1000a36d
lea esi, [eax - 0x10]
movsx ecx, byte [eax + 0x10014e20]
mov dword [esp + 0x24], ecx
cmp dword [esp], ecx
jae 0x1000a2e0
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 4]
cmp esi, dword [esp + 0x1c]
jae 0x1000a341
movzx eax, byte [esi]
mov ecx, dword [esp]
shl eax, cl
inc esi
or edx, eax
add ecx, 8
mov dword [esp], ecx
cmp ecx, dword [esp + 0x24]
jb 0x1000a2b0
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0x20]
lea esi, [eax - 0x10]
xor edx, edx
dec edx
mov ecx, dword [esp + 0x24]
shl edx, cl
not edx
mov edi, dword [esp + 0xc]
and edx, edi
shr edi, cl
mov dword [esp + 0xc], edi
sub dword [esp], ecx
movsx esi, byte [esi + 0x100158e0]
add esi, edx
mov ecx, dword [esp + 4]
lea edx, [ecx + ebx]
add edx, 0x2924
xor ecx, ecx
mov dword [esp + 0x20], eax
cmp eax, 0x10
jne 0x1000a326
mov ecx, dword [esp + 4]
mov cl, byte [ebx + ecx + 0x2923]
movzx ecx, cl
push esi
push ecx
push edx
call sub.msvcrt.dll_memset
add esp, 0xc
add ebx, esi
mov ecx, ebx
mov esi, dword [esp + 4]
jmp 0x1000a0af
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [edi], 0x12
jmp 0x1000a381
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [edi], 0x10
jmp 0x1000a381
xor ebx, ebx
mov dword [esp + 0x20], 0x10
mov eax, 0x11
jmp 0x1000ab33
lea eax, [eax + eax*4]
add eax, 0xfffffffc
mov dword [esp + 0x10], eax
mov edx, edi
mov ecx, dword [esp]
xor edi, edi
dec edi
shl edi, cl
mov dword [edx + 4], ecx
xor eax, eax
test cl, 0x20
cmove eax, edi
not eax
and eax, dword [esp + 0xc]
mov dword [edx + 0x38], eax
mov eax, dword [esp + 0x20]
mov dword [edx + 0x20], eax
mov dword [edx + 0x24], ebx
mov eax, dword [esp + 0x24]
mov dword [edx + 0x28], eax
mov eax, dword [esp + 0x34]
mov dword [edx + 0x3c], eax
sub esi, dword [esp + 0x28]
mov eax, dword [esp + 0xe0]
mov dword [eax], esi
mov edi, dword [esp + 8]
sub edi, dword [esp + 0xe8]
mov eax, dword [esp + 0xec]
mov dword [eax], edi
mov eax, dword [esp + 0xf0]
test al, 9
je 0x1000a525
mov esi, dword [esp + 0x10]
test esi, esi
js 0x1000a529
mov ecx, edx
mov ecx, dword [edx + 0x1c]
movzx ebx, cx
shr ecx, 0x10
test edi, edi
je 0x1000a4f3
mov eax, dword [esp + 0xe8]
mov dword [esp], eax
mov edx, 0x5e6ea9af
mov eax, edi
mul edx
shr edx, 0xb
imul eax, edx, 0x15b0
mov esi, edi
sub esi, eax
xor eax, eax
cmp esi, 8
mov dword [esp + 8], edi
jb 0x1000a49f
mov eax, esi
and eax, 0x1ff8
xor edi, edi
mov ebp, dword [esp]
mov edx, edi
movzx edi, byte [ebp + edi]
add edi, ebx
add ecx, edi
movzx ebx, byte [ebp + edx + 1]
add ebx, edi
add ecx, ebx
movzx edi, byte [ebp + edx + 2]
add edi, ebx
add ecx, edi
movzx ebx, byte [ebp + edx + 3]
add ebx, edi
add ecx, ebx
movzx edi, byte [ebp + edx + 4]
add edi, ebx
add ecx, edi
movzx ebx, byte [ebp + edx + 5]
add ebx, edi
add ecx, ebx
movzx edi, byte [ebp + edx + 6]
add edi, ebx
add ecx, edi
movzx ebx, byte [ebp + edx + 7]
add ebx, edi
add ecx, ebx
lea edi, [edx + 8]
add edx, 0xf
cmp edx, esi
jb 0x1000a447
add ebp, edi
jmp 0x1000a4a2
mov ebp, dword [esp]
mov edx, esi
sub edx, eax
jbe 0x1000a4ba
xor eax, eax
movzx edi, byte [ebp + eax]
add ebx, edi
add ecx, ebx
inc eax
cmp edx, eax
jne 0x1000a4aa
add ebp, edx
mov dword [esp], ebp
mov eax, ebx
mov ebp, 0x80078071
mul ebp
mov edi, edx
shr edi, 0xf
mov eax, ecx
mul ebp
imul eax, edi, 0xfff1
sub ebx, eax
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
mov edi, dword [esp + 8]
sub edi, esi
mov esi, 0x15b0
jne 0x1000a430
shl ecx, 0x10
or ecx, ebx
mov edx, dword [esp + 4]
mov dword [edx + 0x1c], ecx
mov esi, dword [esp + 0x10]
test esi, esi
jne 0x1000a529
xor esi, esi
mov eax, dword [esp + 0xf0]
test al, 1
je 0x1000a529
xor eax, eax
cmp ecx, dword [edx + 0x10]
sete al
lea esi, [eax*2 - 2]
jmp 0x1000a529
mov esi, dword [esp + 0x10]
mov eax, esi
add esp, 0xcc
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], ebx
mov ebx, edx
mov edx, eax
sub eax, esi
cmp eax, 4
jl 0x1000a67d
mov ecx, dword [esp + 0x2c]
sub ecx, dword [esp + 8]
cmp ecx, 1
jle 0x1000a67d
mov ecx, dword [esp]
cmp ecx, 0xe
ja 0x1000a57c
movzx eax, word [esi]
shl eax, cl
mov ebx, dword [esp + 0xc]
or ebx, eax
add esi, 2
or ecx, 0x10
mov dword [esp], ecx
jmp 0x1000a580
mov ebx, dword [esp + 0xc]
mov edi, ebx
mov eax, ebx
and eax, 0x3ff
mov ecx, dword [esp + 4]
movsx ebx, word [ecx + eax*2 + 0x160]
test ebx, ebx
js 0x1000a5a0
mov ecx, ebx
shr ecx, 9
jmp 0x1000a5c2
mov eax, 0xa
mov edx, dword [esp + 4]
not ebx
bt edi, eax
adc ebx, 0
lea ecx, [eax + 1]
movsx ebx, word [edx + ebx*2 + 0x960]
mov eax, ecx
test ebx, ebx
js 0x1000a5a9
shr edi, cl
mov dword [esp + 0xc], edi
mov eax, dword [esp]
sub eax, ecx
bt ebx, 8
jb 0x1000a6b7
cmp eax, 0xe
mov dword [esp + 0x14], ebx
ja 0x1000a5fb
movzx edx, word [esi]
mov ecx, eax
shl edx, cl
mov ecx, dword [esp + 0xc]
or ecx, edx
add esi, 2
mov dword [esp + 0x18], esi
or eax, 0x10
mov esi, eax
jmp 0x1000a605
mov dword [esp + 0x18], esi
mov esi, eax
mov ecx, dword [esp + 0xc]
mov edi, ecx
mov eax, ecx
and eax, 0x3ff
mov ecx, dword [esp + 4]
movsx eax, word [ecx + eax*2 + 0x160]
test eax, eax
js 0x1000a625
mov ecx, eax
shr ecx, 9
jmp 0x1000a647
mov edx, 0xa
mov ebx, dword [esp + 4]
not eax
bt edi, edx
adc eax, 0
lea ecx, [edx + 1]
movsx eax, word [ebx + eax*2 + 0x960]
mov edx, ecx
test eax, eax
js 0x1000a62e
shr edi, cl
mov dword [esp + 0xc], edi
sub esi, ecx
mov dword [esp], esi
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 8]
mov byte [ecx], bl
bt eax, 8
jb 0x1000a6be
mov ecx, dword [esp + 8]
mov byte [ecx + 1], al
add ecx, 2
mov dword [esp + 8], ecx
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 4]
jmp 0x1000a536
cmp dword [esp], 0xe
ja 0x1000a75a
cmp eax, 1
jle 0x1000a6cf
movzx edi, byte [esi]
mov eax, dword [esp]
mov ecx, eax
shl edi, cl
movzx edx, byte [esi + 1]
add cl, 8
shl edx, cl
or edx, edi
or dword [esp + 0xc], edx
mov ebx, dword [esp + 4]
add esi, 2
or eax, 0x10
mov dword [esp], eax
jmp 0x1000a75a
mov dword [esp], eax
mov eax, ebx
jmp 0x1000a6c6
inc dword [esp + 8]
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 4]
jmp 0x1000a7b7
mov eax, dword [esp + 0xc]
and eax, 0x3ff
movsx eax, word [ebx + eax*2 + 0x160]
test eax, eax
js 0x1000a6f9
movzx ecx, ax
cmp ecx, 0x200
jb 0x1000a736
shr eax, 9
cmp dword [esp], eax
jae 0x1000a75a
jmp 0x1000a736
cmp dword [esp], 0xb
jb 0x1000a736
mov ecx, 0xa
not eax
mov edx, dword [esp + 0xc]
bt edx, ecx
adc eax, 0
mov edx, dword [esp + 4]
movsx eax, word [edx + eax*2 + 0x960]
test eax, eax
jns 0x1000a729
lea edx, [ecx + 2]
inc ecx
cmp dword [esp], edx
jae 0x1000a704
test ax, ax
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 4]
jns 0x1000a75a
cmp esi, edx
jae 0x1000a8c8
movzx eax, byte [esi]
mov ecx, dword [esp]
shl eax, cl
inc esi
or dword [esp + 0xc], eax
add ecx, 8
mov dword [esp], ecx
cmp ecx, 0xf
jb 0x1000a6cf
mov eax, dword [esp + 0xc]
and eax, 0x3ff
mov edx, ebx
movsx ebx, word [ebx + eax*2 + 0x160]
test ebx, ebx
js 0x1000a782
mov ecx, ebx
shr ecx, 9
and ebx, 0x1ff
mov edi, dword [esp + 0xc]
jmp 0x1000a7a4
mov eax, 0xa
mov edi, dword [esp + 0xc]
not ebx
bt edi, eax
adc ebx, 0
lea ecx, [eax + 1]
movsx ebx, word [edx + ebx*2 + 0x960]
mov eax, ecx
test ebx, ebx
js 0x1000a78b
shr edi, cl
mov dword [esp + 0xc], edi
sub dword [esp], ecx
mov eax, ebx
cmp ebx, 0xff
jbe 0x1000a7d9
and eax, 0x1ff
mov ecx, 0x100
cmp eax, 0x100
jne 0x1000a7f7
test byte [edx + 0x14], 1
mov ebx, ecx
je 0x10009a87
jmp 0x1000959c
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x2c]
jae 0x1000a8eb
mov eax, dword [esp + 8]
mov byte [eax], bl
inc eax
mov dword [esp + 8], eax
jmp 0x1000a536
mov ebx, dword [eax*4 + 0x100152c0]
lea ecx, [eax - 0x11d]
mov dword [esp + 0x24], 0
cmp ecx, 0xffffffec
jae 0x1000a81a
mov edx, dword [esp + 0xc]
mov eax, dword [esp]
jmp 0x1000a861
mov eax, dword [eax*4 + 0x1001533c]
mov dword [esp + 0x24], eax
cmp dword [esp], eax
mov edx, dword [esp + 0xc]
jae 0x1000a84b
cmp esi, dword [esp + 0x1c]
jae 0x1000a8a9
movzx eax, byte [esi]
mov ecx, dword [esp]
shl eax, cl
inc esi
or edx, eax
add ecx, 8
mov dword [esp], ecx
cmp ecx, dword [esp + 0x24]
jb 0x1000a82e
xor eax, eax
dec eax
mov ecx, dword [esp + 0x24]
shl eax, cl
not eax
and eax, edx
shr edx, cl
add ebx, eax
mov eax, dword [esp]
sub eax, ecx
mov dword [esp], eax
cmp eax, 0xe
ja 0x1000a982
mov eax, dword [esp + 0x1c]
sub eax, esi
cmp eax, 1
jle 0x1000a8fd
mov ebp, edx
mov edi, esi
movzx esi, byte [esi]
mov edx, dword [esp]
mov ecx, edx
shl esi, cl
movzx eax, byte [edi + 1]
add cl, 8
shl eax, cl
or eax, ebp
or eax, esi
mov esi, edi
add esi, 2
or edx, 0x10
mov dword [esp], edx
mov edx, eax
jmp 0x1000a982
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov edx, dword [esp + 4]
mov dword [edx], 0x19
jmp 0x10009d81
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0x17
lea eax, [eax + eax*4]
add eax, 0xfffffffc
mov dword [esp + 0x10], eax
mov edx, ebx
jmp 0x10009909
mov dword [esp + 0x10], 2
mov eax, 0x18
jmp 0x10009427
mov eax, edx
and eax, 0x3ff
mov edi, dword [esp + 4]
movsx eax, word [edi + eax*2 + 0xf00]
test eax, eax
js 0x1000a929
movzx ecx, ax
cmp ecx, 0x200
jb 0x1000a95e
shr eax, 9
cmp dword [esp], eax
jae 0x1000a982
jmp 0x1000a95e
cmp dword [esp], 0xb
jb 0x1000a95e
mov ecx, 0xa
not eax
bt edx, ecx
adc eax, 0
movsx eax, word [edi + eax*2 + 0x1700]
test eax, eax
jns 0x1000a959
mov edi, edx
lea edx, [ecx + 2]
inc ecx
cmp dword [esp], edx
mov edx, edi
mov edi, dword [esp + 4]
jae 0x1000a934
test ax, ax
jns 0x1000a982
cmp esi, dword [esp + 0x1c]
jae 0x1000ab47
movzx eax, byte [esi]
mov ecx, dword [esp]
shl eax, cl
inc esi
or edx, eax
add ecx, 8
mov dword [esp], ecx
cmp ecx, 0xf
jb 0x1000a8fd
mov dword [esp + 0x14], ebx
mov edi, edx
mov eax, edx
and eax, 0x3ff
mov ecx, dword [esp + 4]
movsx eax, word [ecx + eax*2 + 0xf00]
test eax, eax
js 0x1000a9ab
mov ecx, eax
shr ecx, 9
and eax, 0x1ff
jmp 0x1000a9cd
mov edx, 0xa
mov ebx, dword [esp + 4]
not eax
bt edi, edx
adc eax, 0
lea ecx, [edx + 1]
movsx eax, word [ebx + eax*2 + 0x1700]
mov edx, ecx
test eax, eax
js 0x1000a9b4
shr edi, cl
mov dword [esp + 0xc], edi
mov edx, dword [esp]
sub edx, ecx
mov ecx, dword [eax*4 + 0x100157bc]
mov dword [esp + 0x20], ecx
lea ecx, [eax - 0x1e]
mov dword [esp + 0x24], 0
cmp ecx, 0xffffffe6
mov ebx, dword [esp + 0x14]
mov dword [esp], edx
jae 0x1000aa04
mov dword [esp + 0x18], esi
mov eax, dword [esp + 0x20]
jmp 0x1000aa62
mov eax, dword [eax*4 + 0x1001583c]
mov dword [esp + 0x24], eax
cmp edx, eax
mov edx, dword [esp + 0x1c]
jae 0x1000aa3c
mov edi, dword [esp + 4]
cmp esi, edx
jae 0x1000aae6
movzx eax, byte [esi]
mov ecx, dword [esp]
shl eax, cl
inc esi
or dword [esp + 0xc], eax
add ecx, 8
mov dword [esp], ecx
cmp ecx, dword [esp + 0x24]
jb 0x1000aa1b
mov dword [esp + 0x18], esi
xor eax, eax
dec eax
mov ecx, dword [esp + 0x24]
shl eax, cl
not eax
mov edi, dword [esp + 0xc]
and eax, edi
shr edi, cl
mov dword [esp + 0xc], edi
mov esi, dword [esp + 0x20]
add esi, eax
mov eax, esi
sub dword [esp], ecx
mov edx, dword [esp + 8]
mov ecx, edx
mov edi, dword [esp + 0xe4]
sub ecx, edi
mov esi, eax
dec eax
cmp eax, ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x20], esi
mov dword [esp + 8], edx
jae 0x1000ab2e
mov eax, ecx
sub eax, esi
add eax, edi
cmp edx, eax
mov ecx, edx
cmovbe ecx, eax
add ecx, ebx
cmp ecx, dword [esp + 0x2c]
jbe 0x1000aaaa
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 4]
jmp 0x1000ab66
cmp ebx, 9
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 4]
jb 0x1000aafd
cmp ebx, dword [esp + 0x20]
ja 0x1000aafd
mov ecx, ebx
and ecx, 0xfffffff8
add ecx, eax
movsd xmm0, qword [eax]
mov edi, dword [esp + 8]
movsd qword [edi], xmm0
add edi, 8
mov dword [esp + 8], edi
add eax, 8
cmp eax, ecx
jb 0x1000aac4
and ebx, 7
jmp 0x1000abb4
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [edi], 0x1b
jmp 0x1000a381
cmp ebx, 3
jae 0x1000abbd
test ebx, ebx
je 0x1000a536
mov cl, byte [eax]
mov edi, dword [esp + 8]
mov byte [edi], cl
cmp ebx, 2
jne 0x1000ab25
mov al, byte [eax + 1]
mov ecx, dword [esp + 8]
mov byte [ecx + 1], al
add dword [esp + 8], ebx
jmp 0x1000a536
mov eax, 0x25
xor ecx, ecx
dec ecx
mov dword [esp + 0x10], ecx
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 4]
jmp 0x10009427
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov edx, dword [esp + 4]
mov dword [edx], 0x1a
jmp 0x10009d81
sub ebx, 1
jae 0x1000ab73
xor ebx, ebx
dec ebx
jmp 0x1000a536
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x2c]
jae 0x1000aba2
mov ebp, eax
mov ecx, dword [esp + 0x34]
lea eax, [ecx + 1]
sub ecx, dword [esp + 0x20]
mov edi, dword [esp + 0xe4]
mov cl, byte [edi + ecx]
mov byte [ebp], cl
inc ebp
mov dword [esp + 8], ebp
mov dword [esp + 0x34], eax
jmp 0x1000ab66
mov dword [esp + 0x10], 2
mov eax, 0x35
jmp 0x10009427
cmp ebx, 2
jbe 0x1000ab06
mov cl, byte [eax]
mov edi, dword [esp + 8]
mov byte [edi], cl
mov cl, byte [eax + 1]
mov byte [edi + 1], cl
mov cl, byte [eax + 2]
mov byte [edi + 2], cl
add edi, 3
mov dword [esp + 8], edi
add eax, 3
add ebx, 0xfffffffd
jmp 0x1000abb4