Function at 0x100036e0
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf8
or eax, 0xffffffff
mov dword [ebp - 4], ecx
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0x10]
mov ecx, ebx
push esi
mov eax, dword [eax]
mov esi, dword [ebp + 0x14]
add eax, edx
mov dword [ebp - 0x50], edx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x18], ecx
push edi
test ebx, ebx
je 0x1000371d
mov eax, dword [esi]
add eax, ebx
mov dword [ebp - 0x3c], eax
jmp 0x10003724
mov dword [ebp - 0x3c], 0
mov eax, dword [ebp + 0x18]
and eax, 4
mov dword [ebp - 0x58], eax
je 0x1000373f
mov dword [ebp - 0x34], 0xffffffff
mov dword [ebp - 0x1c], 0
jmp 0x10003757
mov eax, dword [esi]
sub eax, dword [ebp + 0xc]
add eax, ebx
mov dword [ebp - 0x1c], eax
lea edx, [eax - 1]
mov dword [ebp - 0x34], edx
test eax, edx
jne 0x10004ab3
cmp ebx, dword [ebp + 0xc]
jb 0x10004ab3
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x20]
lea edx, [eax + 0x1840]
mov edi, dword [eax + 0x28]
mov esi, dword [eax + 4]
mov dword [ebp - 0x64], edx
lea edx, [eax + 0x1cc0]
mov dword [ebp - 0x60], edx
lea edx, [eax + 0x1d40]
mov dword [ebp - 0x5c], edx
lea edx, [eax + 0x1d8c]
mov dword [ebp - 0x74], edx
lea edx, [eax + 0x1eac]
mov dword [ebp - 0x70], edx
lea edx, [eax + 0x1ecc]
mov dword [ebp - 0x38], edi
mov edi, dword [eax + 0x3c]
mov dword [ebp - 0x6c], edx
mov edx, dword [eax + 0x38]
mov dword [ebp - 0x28], ebx
mov ebx, dword [eax + 0x24]
mov eax, dword [eax]
mov dword [ebp - 0x44], edi
mov edi, dword [ebp - 0x10]
mov dword [ebp - 8], edx
mov dword [ebp - 0x2c], ebx
cmp eax, 0x35
ja case.0x100037d6.32
movzx eax, byte [eax + 0x10004b54]
mov dword [ebp - 0x24], 1
jmp dword [eax*4 + 0x10004ad0]
mov ecx, dword [ebp - 4]
xor ebx, ebx
mov eax, dword [ebp + 0x18]
xor edx, edx
xor esi, esi
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x2c], ebx
mov dword [ecx + 0xc], 0
mov dword [ecx + 8], 0
mov dword [ebp - 0x28], ebx
mov dword [ebp - 8], edx
mov dword [ecx + 0x1c], 1
mov dword [ecx + 0x10], 1
test al, 1
je 0x1000404f
jmp 0x10003825
mov ecx, dword [ebp - 4]
mov eax, dword [ebp + 0x18]
mov ebx, edi
cmp ebx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x2c]
jb 0x1000384c
test al, 2
mov dword [ebp - 0x30], 1
mov eax, 0xfffffffc
mov dword [ecx], 1
cmovne eax, dword [ebp - 0x30]
jmp 0x100048bb
movzx eax, byte [edi]
inc edi
mov dword [ecx + 8], eax
jmp 0x10003858
mov ecx, dword [ebp - 4]
cmp edi, dword [ebp - 0x20]
jb 0x1000387c
test byte [ebp + 0x18], 2
mov eax, 0xfffffffc
mov dword [ebp - 0x30], 1
cmovne eax, dword [ebp - 0x30]
mov dword [ecx], 2
jmp 0x100048bb
movzx ebx, byte [edi]
xor edx, edx
mov dword [ecx + 0xc], ebx
inc edi
mov ecx, dword [ecx + 8]
mov eax, ecx
shl eax, 8
add eax, ebx
mov dword [ebp - 0x30], 0x1f
div dword [ebp - 0x30]
mov dword [ebp - 0x10], edi
test edx, edx
jne 0x100038b1
test bl, 0x20
jne 0x100038b1
mov eax, ecx
and al, 0xf
cmp al, 8
jne 0x100038b1
xor ebx, ebx
jmp 0x100038b6
mov ebx, 1
cmp dword [ebp - 0x58], 0
mov dword [ebp - 0x2c], ebx
jne 0x100038e6
shr ecx, 4
mov eax, 1
add ecx, 8
shl eax, cl
cmp eax, 0x8000
ja 0x100038dc
cmp dword [ebp - 0x1c], eax
jb 0x100038dc
xor eax, eax
jmp 0x100038e1
mov eax, 1
or ebx, eax
mov dword [ebp - 0x2c], ebx
test ebx, ebx
je 0x1000404f
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], 0xffffffff
mov dword [eax], 0x24
jmp 0x100048d8
cmp edi, dword [ebp - 0x20]
jae 0x100047b8
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
mov ecx, dword [ebp - 0x38]
add esi, 8
or edx, eax
mov dword [ebp - 0x10], edi
cmp esi, ecx
jb case.0x100037d6.13
mov eax, dword [ebp - 0x24]
sub esi, ecx
shl eax, cl
dec eax
mov dword [ebp - 0x4c], esi
and eax, edx
shr edx, cl
mov dword [ebp - 8], edx
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x14]
movsx eax, byte [edx + 0x1004cc14]
add ecx, eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x14], ecx
cmp edx, 0x10
jne 0x10003961
movzx edx, byte [eax + ebx + 0x1ee2]
add eax, ebx
jmp 0x10003965
xor edx, edx
add eax, ebx
push ecx
push edx
add eax, 0x1ee3
push eax
call fcn.1001cf50
mov ecx, dword [ebp - 4]
add esp, 0xc
add ebx, dword [ebp - 0x14]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov ecx, dword [ecx + 0x2c]
mov dword [ebp - 0x2c], ebx
mov eax, dword [eax + 0x30]
add eax, ecx
cmp ebx, eax
jae 0x10003ad7
cmp esi, 0xf
jae 0x10003a59
mov eax, dword [ebp - 0x20]
sub eax, edi
cmp eax, 2
jge 0x10003a38
mov ecx, dword [ebp - 4]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ecx + eax*2 + 0x1040]
mov dword [ebp - 0x1c], eax
test eax, eax
js 0x100039d5
sar eax, 9
test eax, eax
je case.0x100037d6.11
cmp esi, eax
jae 0x10003a5c
jmp case.0x100037d6.11
cmp esi, 0xa
jbe case.0x100037d6.11
mov ecx, 0xa
mov dword [ebp - 0x14], ecx
mov edi, dword [ebp - 4]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x1c]
and eax, 1
not ecx
add eax, ecx
movsx ecx, word [edi + eax*2 + 0x1d40]
mov eax, dword [ebp - 0x14]
mov edi, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x14], eax
test ecx, ecx
jns 0x10003a59
mov ecx, dword [ebp - 0x14]
inc eax
cmp esi, eax
jae 0x100039e2
cmp edi, dword [ebp - 0x20]
jae 0x1000464b
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add esi, 8
mov dword [ebp - 0x10], edi
or edx, eax
cmp esi, 0xf
jb 0x100039ab
jmp 0x10003a59
movzx edx, byte [edi + 1]
lea ecx, [esi + 8]
movzx eax, byte [edi]
add edi, 2
shl edx, cl
mov ecx, esi
shl eax, cl
or edx, eax
mov dword [ebp - 0x10], edi
or dword [ebp - 8], edx
add esi, 0x10
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ecx + eax*2 + 0x1040]
mov dword [ebp - 0x28], eax
test eax, eax
js 0x10003a81
mov ecx, eax
sar ecx, 9
and eax, 0x1ff
mov dword [ebp - 0x28], eax
jmp 0x10003ab4
mov edi, dword [ebp - 4]
mov ecx, 0xa
mov ebx, dword [ebp - 0x28]
nop dword [eax]
mov eax, edx
not ebx
shr eax, cl
inc ecx
and eax, 1
add eax, ebx
movsx ebx, word [edi + eax*2 + 0x1d40]
test ebx, ebx
js 0x10003a90
mov edi, dword [ebp - 0x10]
mov dword [ebp - 0x28], ebx
mov ebx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x28]
shr edx, cl
sub esi, ecx
mov dword [ebp - 8], edx
mov dword [ebp - 0x4c], esi
cmp eax, 0x10
jae 0x1000462a
mov ecx, dword [ebp - 4]
mov byte [ebx + ecx + 0x1ee3], al
inc ebx
jmp 0x1000397e
jne case.0x100037d6.14
mov eax, dword [ebp - 4]
push ecx
add eax, 0x1ee3
push eax
push dword [ebp - 0x74]
call fcn.1001d110
mov ecx, dword [ebp - 4]
mov eax, dword [ecx + 0x2c]
push dword [ecx + 0x30]
add eax, 0x1ee3
add eax, ecx
push eax
lea eax, [ecx + 0x1eac]
push eax
call fcn.1001d110
mov ecx, dword [ebp - 4]
add esp, 0x18
mov eax, dword [ecx + 0x18]
dec eax
mov dword [ecx + 0x18], eax
mov edx, dword [ebp - 8]
mov ecx, dword [ecx + 0x18]
test ecx, ecx
jns 0x100043ba
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x20]
sub ecx, edi
cmp ecx, 4
jl 0x10003c5a
sub eax, dword [ebp - 0x18]
mov edi, dword [ebp - 0x10]
cmp eax, 2
jl 0x10003c5a
cmp esi, 0xf
jae 0x10003b6b
movzx edx, byte [edi + 1]
mov ecx, esi
movzx eax, byte [edi]
add edi, 2
shl edx, 8
or edx, eax
mov dword [ebp - 0x10], edi
shl edx, cl
or dword [ebp - 8], edx
add esi, 0x10
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mov eax, edx
and eax, 0x3ff
movsx ebx, word [ecx + eax*2 + 0x40]
test ebx, ebx
js 0x10003b85
mov ecx, ebx
sar ecx, 9
jmp 0x10003bae
mov ecx, 0xa
nop word [eax + eax]
mov edi, dword [ebp - 4]
mov eax, edx
shr eax, cl
not ebx
and eax, 1
inc ecx
add eax, ebx
movsx ebx, word [edi + eax*2 + 0x1840]
test ebx, ebx
js 0x10003b90
mov edi, dword [ebp - 0x10]
shr edx, cl
sub esi, ecx
mov dword [ebp - 8], edx
test ebx, 0x100
jne 0x10003d8b
cmp esi, 0xf
jae 0x10003be5
movzx edx, byte [edi + 1]
mov ecx, esi
movzx eax, byte [edi]
add edi, 2
shl edx, 8
or edx, eax
mov dword [ebp - 0x10], edi
shl edx, cl
or dword [ebp - 8], edx
add esi, 0x10
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ecx + eax*2 + 0x40]
mov dword [ebp - 0x1c], eax
test eax, eax
js 0x10003c02
mov ecx, eax
sar ecx, 9
jmp 0x10003c37
mov ecx, 0xa
mov dword [ebp - 0x14], ecx
nop word [eax + eax]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x1c]
and eax, 1
not ecx
add eax, ecx
mov ecx, dword [ebp - 4]
movsx eax, word [ecx + eax*2 + 0x1840]
mov ecx, dword [ebp - 0x14]
inc ecx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x14], ecx
test eax, eax
js 0x10003c10
shr edx, cl
sub esi, ecx
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 8], edx
mov byte [ecx], bl
inc ecx
test eax, 0x100
jne 0x10003d86
add dword [ebp - 0x18], 2
mov byte [ecx], al
jmp 0x10003b27
cmp esi, 0xf
jae 0x10003d17
cmp ecx, 2
jge 0x10003cf6
mov ecx, dword [ebp - 4]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ecx + eax*2 + 0x40]
mov dword [ebp - 0x1c], eax
test eax, eax
js 0x10003c93
sar eax, 9
test eax, eax
je case.0x100037d6.15
cmp esi, eax
jae 0x10003d17
jmp case.0x100037d6.15
cmp esi, 0xa
jbe case.0x100037d6.15
mov ecx, 0xa
mov dword [ebp - 0x14], ecx
mov edi, dword [ebp - 4]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x1c]
and eax, 1
not ecx
add eax, ecx
movsx ecx, word [edi + eax*2 + 0x1840]
mov eax, dword [ebp - 0x14]
mov edi, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x14], eax
test ecx, ecx
jns 0x10003d17
mov ecx, dword [ebp - 0x14]
inc eax
cmp esi, eax
jae 0x10003ca0
cmp edi, dword [ebp - 0x20]
jae 0x10004659
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add esi, 8
mov dword [ebp - 0x10], edi
or edx, eax
cmp esi, 0xf
jb 0x10003c6c
jmp 0x10003d17
movzx edx, byte [edi + 1]
lea ecx, [esi + 8]
movzx eax, byte [edi]
add edi, 2
shl edx, cl
mov ecx, esi
shl eax, cl
or edx, eax
mov dword [ebp - 0x10], edi
or dword [ebp - 8], edx
add esi, 0x10
mov edx, dword [ebp - 8]
mov ebx, dword [ebp - 4]
mov eax, edx
and eax, 0x3ff
movsx ebx, word [ebx + eax*2 + 0x40]
test ebx, ebx
js 0x10003d37
mov ecx, ebx
sar ecx, 9
and ebx, 0x1ff
jmp 0x10003d5e
mov ecx, 0xa
nop dword [eax]
mov edi, dword [ebp - 4]
mov eax, edx
shr eax, cl
not ebx
and eax, 1
inc ecx
add eax, ebx
movsx ebx, word [edi + eax*2 + 0x1840]
test ebx, ebx
js 0x10003d40
mov edi, dword [ebp - 0x10]
shr edx, cl
sub esi, ecx
mov dword [ebp - 8], edx
cmp ebx, 0x100
jae 0x10003d8b
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x3c]
cmp ecx, eax
jae 0x10004667
mov byte [ecx], bl
inc ecx
mov dword [ebp - 0x18], ecx
jmp 0x10003b2a
mov dword [ebp - 0x18], ecx
mov ebx, eax
and ebx, 0x1ff
mov dword [ebp - 0x2c], ebx
cmp ebx, 0x100
je 0x10004042
movzx ecx, byte [ebx + 0x1004d00b]
movzx ebx, word [ebx*2 + 0x1004ceb6]
mov dword [ebp - 0x38], ecx
test ecx, ecx
je 0x10003deb
cmp esi, ecx
jae 0x10003dda
cmp edi, dword [ebp - 0x20]
jae 0x100047aa
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
mov ecx, dword [ebp - 0x38]
add esi, 8
or edx, eax
mov dword [ebp - 0x10], edi
cmp esi, ecx
jb case.0x100037d6.17
mov eax, dword [ebp - 0x24]
sub esi, ecx
shl eax, cl
dec eax
and eax, edx
shr edx, cl
mov dword [ebp - 8], edx
add ebx, eax
cmp esi, 0xf
jae 0x10003eb7
mov eax, dword [ebp - 0x20]
sub eax, edi
cmp eax, 2
jge 0x10003e96
mov ecx, dword [ebp - 4]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ecx + eax*2 + 0x840]
mov dword [ebp - 0x1c], eax
test eax, eax
js 0x10003e2c
sar eax, 9
test eax, eax
je case.0x100037d6.18
cmp esi, eax
jae 0x10003eba
jmp case.0x100037d6.18
cmp esi, 0xa
jbe case.0x100037d6.18
mov ecx, 0xa
mov dword [ebp - 0x14], ecx
nop dword [eax]
mov edi, dword [ebp - 4]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x1c]
and eax, 1
not ecx
add eax, ecx
movsx ecx, word [edi + eax*2 + 0x1cc0]
mov eax, dword [ebp - 0x14]
mov edi, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x14], eax
test ecx, ecx
jns 0x10003eb7
mov ecx, dword [ebp - 0x14]
inc eax
cmp esi, eax
jae 0x10003e40
cmp edi, dword [ebp - 0x20]
jae 0x10004779
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add esi, 8
mov dword [ebp - 0x10], edi
or edx, eax
cmp esi, 0xf
jb 0x10003e02
jmp 0x10003eb7
movzx edx, byte [edi + 1]
lea ecx, [esi + 8]
movzx eax, byte [edi]
add edi, 2
shl edx, cl
mov ecx, esi
shl eax, cl
or edx, eax
mov dword [ebp - 0x10], edi
or dword [ebp - 8], edx
add esi, 0x10
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ecx + eax*2 + 0x840]
mov dword [ebp - 0x1c], eax
test eax, eax
js 0x10003edc
mov ecx, eax
sar ecx, 9
and eax, 0x1ff
jmp 0x10003f0b
mov ecx, 0xa
mov dword [ebp - 0x14], ecx
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x1c]
and eax, 1
not ecx
add eax, ecx
mov ecx, dword [ebp - 4]
movsx eax, word [ecx + eax*2 + 0x1cc0]
mov ecx, dword [ebp - 0x14]
inc ecx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x14], ecx
test eax, eax
js 0x10003ee4
shr edx, cl
sub esi, ecx
movzx ecx, byte [eax + 0x1004d098]
movzx eax, word [eax*2 + 0x1004d058]
mov dword [ebp - 8], edx
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x28], eax
test ecx, ecx
je 0x10003f62
cmp esi, ecx
jae 0x10003f50
nop
cmp edi, dword [ebp - 0x20]
jae 0x10004787
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
mov ecx, dword [ebp - 0x38]
add esi, 8
or edx, eax
mov dword [ebp - 0x10], edi
cmp esi, ecx
jb case.0x100037d6.19
mov eax, dword [ebp - 0x24]
sub esi, ecx
shl eax, cl
dec eax
and eax, edx
shr edx, cl
add dword [ebp - 0x28], eax
mov dword [ebp - 8], edx
mov ecx, dword [ebp - 0x18]
sub ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x44], ecx
test eax, eax
je 0x10003f7a
cmp eax, ecx
ja 0x10003f7a
test ecx, ecx
jne 0x10003f84
cmp dword [ebp - 0x58], 0
jne case.0x100037d6.24
mov edi, dword [ebp - 0x10]
sub ecx, eax
and ecx, dword [ebp - 0x34]
add ecx, dword [ebp + 0xc]
cmp dword [ebp - 0x18], ecx
mov eax, ecx
mov dword [ebp - 0x30], ecx
cmova eax, dword [ebp - 0x18]
add eax, ebx
cmp eax, dword [ebp - 0x3c]
jbe 0x10003fd6
mov ecx, dword [ebp - 0x18]
mov eax, ebx
dec ebx
test eax, eax
je 0x10003b27
cmp ecx, dword [ebp - 0x3c]
jae 0x10004795
mov eax, dword [ebp - 0x44]
sub eax, dword [ebp - 0x28]
and eax, dword [ebp - 0x34]
mov ecx, dword [ebp + 0xc]
inc dword [ebp - 0x44]
mov al, byte [eax + ecx]
mov ecx, dword [ebp - 0x18]
mov byte [ecx], al
inc ecx
mov dword [ebp - 0x18], ecx
jmp 0x10003fa5
cmp ebx, 2
jbe 0x10004018
lea ecx, [ebx - 3]
mov eax, 0xaaaaaaab
mul ecx
mov ecx, dword [ebp - 0x30]
shr edx, 1
inc edx
nop dword [eax + eax]
mov edi, dword [ebp - 0x18]
sub ebx, 3
movzx eax, byte [ecx]
add dword [ebp - 0x18], 3
mov byte [edi], al
movzx eax, byte [ecx + 1]
mov byte [edi + 1], al
movzx eax, byte [ecx + 2]
add ecx, 3
mov byte [edi + 2], al
sub edx, 1
jne 0x10003ff0
mov edi, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
test ebx, ebx
je 0x10003b27
mov edx, dword [ebp - 0x18]
mov al, byte [ecx]
mov byte [edx], al
cmp ebx, 1
jbe 0x10004035
mov al, byte [ecx + 1]
mov byte [edx + 1], al
add edx, ebx
mov dword [ebp - 0x18], edx
mov edx, dword [ebp - 8]
jmp 0x10003b27
mov ecx, dword [ebp - 4]
test byte [ecx + 0x14], 1
jne 0x10004713
mov edx, dword [ebp - 8]
cmp esi, 3
jae 0x10004075
cmp edi, dword [ebp - 0x20]
jae 0x1000467c
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add esi, 8
mov dword [ebp - 0x10], edi
or edx, eax
cmp esi, 3
jb case.0x100037d6.3
mov ecx, dword [ebp - 4]
mov eax, edx
and eax, 7
shr edx, 3
sub esi, 3
mov dword [ebp - 8], edx
mov dword [ebp - 0x4c], esi
mov dword [ecx + 0x14], eax
shr eax, 1
mov dword [ecx + 0x18], eax
jne 0x1000423a
mov eax, esi
and eax, 7
cmp esi, eax
jae 0x100040c2
cmp edi, dword [ebp - 0x20]
jae 0x1000468a
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
add esi, 8
or edx, eax
inc edi
mov eax, esi
mov dword [ebp - 0x10], edi
and eax, 7
cmp esi, eax
jb case.0x100037d6.4
mov ecx, esi
and ecx, 7
shr edx, cl
sub esi, ecx
mov dword [ebp - 8], edx
xor ebx, ebx
cmp ebx, 4
jae 0x1000412e
test esi, esi
je case.0x100037d6.6
cmp esi, 8
jae 0x100040fc
cmp edi, dword [ebp - 0x20]
jae 0x10004698
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add esi, 8
mov dword [ebp - 0x10], edi
or edx, eax
cmp esi, 8
jb case.0x100037d6.5
mov eax, dword [ebp - 4]
sub esi, 8
mov byte [ebx + eax + 0x1edf], dl
shr edx, 8
inc ebx
mov dword [ebp - 8], edx
jmp 0x100040d0
mov ecx, dword [ebp - 4]
cmp edi, dword [ebp - 0x20]
jae 0x100046a6
mov al, byte [edi]
inc edi
mov byte [ebx + ecx + 0x1edf], al
inc ebx
mov dword [ebp - 0x10], edi
jmp 0x100040d0
mov ecx, dword [ebp - 4]
movzx ebx, byte [ecx + 0x1ee0]
movzx eax, byte [ecx + 0x1edf]
movzx ecx, byte [ecx + 0x1ee2]
shl ebx, 8
or ebx, eax
shl ecx, 8
mov eax, dword [ebp - 4]
mov dword [ebp - 0x2c], ebx
movzx eax, byte [eax + 0x1ee1]
or ecx, eax
xor ecx, 0xffff
cmp ebx, ecx
jne case.0x100037d6.26
mov ecx, dword [ebp - 0x18]
test ebx, ebx
je 0x10004042
test esi, esi
je case.0x100037d6.7
cmp esi, 8
jae 0x1000419d
cmp edi, dword [ebp - 0x20]
jae 0x100046b1
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add esi, 8
mov dword [ebp - 0x10], edi
or edx, eax
cmp esi, 8
jb case.0x100037d6.29
mov ecx, dword [ebp - 0x18]
movzx eax, dl
shr edx, 8
sub esi, 8
mov dword [ebp - 0x28], eax
mov dword [ebp - 8], edx
jmp 0x100041b4
mov eax, dword [ebp - 0x28]
cmp ecx, dword [ebp - 0x3c]
jae 0x100046bf
mov byte [ecx], al
inc ecx
dec ebx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x2c], ebx
jmp 0x1000416e
cmp ecx, dword [ebp - 0x3c]
jae 0x100046e2
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x20]
cmp edi, eax
jae 0x100046d4
mov edx, dword [ebp - 0x18]
sub eax, edi
mov ecx, dword [ebp - 0x3c]
mov edi, ebx
sub ecx, edx
cmp ecx, eax
cmovae ecx, eax
cmp ecx, ebx
cmovb edi, ecx
push edi
push dword [ebp - 0x10]
push edx
call fcn.1001d110
mov eax, dword [ebp - 0x28]
sub ebx, edi
mov ecx, dword [ebp - 0x18]
add esp, 0xc
add dword [ebp - 0x10], edi
add ecx, edi
mov edx, dword [ebp - 8]
mov edi, dword [ebp - 0x10]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 0x44], eax
test ebx, ebx
jne case.0x100037d6.7
jmp 0x10004042
cmp eax, 3
je 0x100047de
cmp eax, 1
jne 0x100042c3
movaps xmm0, xmmword [0x1004d880]
lea edi, [ecx + 0x1d8c]
push 0x90
mov dword [ecx + 0x2c], 0x120
mov dword [ecx + 0x30], 0x20
push 8
movups xmmword [ecx + 0x1eac], xmm0
push edi
movups xmmword [ecx + 0x1ebc], xmm0
call fcn.1001cf50
push 0x70
add edi, 0x90
push 9
push edi
call fcn.1001cf50
movaps xmm0, xmmword [str._a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_ah_a]
add esp, 0x18
mov ecx, dword [ebp - 4]
movups xmmword [edi + 0x70], xmm0
movq qword [edi + 0x80], xmm0
mov dword [edi + 0x88], 0x8080808
mov dword [edi + 0x8c], 0x8080808
mov edi, dword [ebp - 0x10]
jmp 0x10003b19
xor ebx, ebx
cmp ebx, 3
jae 0x1000433c
movsx eax, byte [ebx + 0x1004cc20]
cmp esi, eax
jae 0x100042fc
cmp edi, dword [ebp - 0x20]
jae 0x100046f7
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
or edx, eax
mov dword [ebp - 0x10], edi
movsx eax, byte [ebx + 0x1004cc20]
add esi, 8
mov dword [ebp - 8], edx
cmp esi, eax
jb case.0x100037d6.9
mov cl, byte [ebx + 0x1004cc20]
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 8]
shl edx, cl
mov ecx, dword [ebp - 4]
dec edx
and edx, eax
mov dword [ecx + ebx*4 + 0x2c], edx
movsx ecx, byte [ebx + 0x1004cc20]
shr eax, cl
sub esi, ecx
mov ecx, dword [ebp - 4]
mov dword [ebp - 8], eax
movzx eax, word [ebx*2 + 0x1004d050]
add eax, edx
mov dword [ebp - 0x4c], esi
mov edx, dword [ebp - 8]
mov dword [ecx + ebx*4 + 0x2c], eax
inc ebx
jmp 0x100042c5
xorps xmm0, xmm0
xor ebx, ebx
movups xmmword [ecx + 0x1ecc], xmm0
mov word [ecx + 0x1edc], 0
mov byte [ecx + 0x1ede], 0
mov dword [ebp - 0x2c], ebx
cmp ebx, dword [ecx + 0x34]
jae 0x100043ae
cmp esi, 3
jae 0x10004383
cmp edi, dword [ebp - 0x20]
jae 0x10004705
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
inc edi
add esi, 8
mov dword [ebp - 0x10], edi
or edx, eax
cmp esi, 3
jb case.0x100037d6.10
movzx eax, byte [ebx + 0x1004d0f8]
mov ecx, edx
mov edi, dword [ebp - 4]
and ecx, 7
shr edx, 3
sub esi, 3
mov dword [ebp - 8], edx
inc ebx
mov dword [ebp - 0x4c], esi
mov byte [eax + edi + 0x1ecc], cl
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 4]
jmp 0x10004358
mov dword [ecx + 0x34], 0x13
jmp 0x10003b1c
mov edx, dword [ebp - 4]
mov eax, ecx
shl eax, 0xb
add edx, 0x40
add eax, edx
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + ecx*4 - 0x64]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp + ecx*4 - 0x74]
push 0x40
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0xf8]
push 0
push eax
call fcn.1001cf50
push 0x800
push 0
push dword [ebp - 0x1c]
call fcn.1001cf50
mov eax, dword [ebp - 4]
add esp, 0x18
mov eax, dword [eax + 0x18]
test eax, eax
jne 0x1000440f
push 0x480
push eax
push dword [ebp - 0x64]
jmp 0x10004427
cmp eax, 1
jne 0x10004420
push 0x80
push 0
push dword [ebp - 0x60]
jmp 0x10004427
push 0x4c
push 0
push dword [ebp - 0x5c]
call fcn.1001cf50
mov edx, dword [ebp - 4]
add esp, 0xc
xor ecx, ecx
mov eax, dword [edx + 0x18]
mov edx, dword [edx + eax*4 + 0x2c]
mov dword [ebp - 0x48], edx
test edx, edx
je 0x10004455
mov eax, dword [ebp - 0xc]
movzx eax, byte [ecx + eax]
inc ecx
inc dword [ebp + eax*4 - 0xf8]
cmp ecx, edx
jb 0x10004442
xor edi, edi
mov edx, 4
xor ecx, ecx
mov dword [ebp - 0xb4], ecx
mov dword [ebp - 0xb8], ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x40], ecx
mov eax, dword [ebp + edx - 0xf8]
add ecx, eax
add ecx, ecx
add edi, eax
mov eax, dword [ebp + edx - 0xf4]
add dword [ebp - 0x40], eax
mov dword [ebp + edx - 0xb4], ecx
add ecx, eax
mov eax, dword [ebp + edx - 0xf0]
add ecx, ecx
add dword [ebp - 0x14], eax
mov dword [ebp + edx - 0xb0], ecx
add ecx, eax
add ecx, ecx
mov dword [ebp + edx - 0xac], ecx
add edx, 0xc
cmp edx, 0x3c
jbe 0x10004470
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x40]
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x54], edi
mov ecx, dword [ebp - 0x54]
mov edi, dword [ebp - 0x10]
add ecx, eax
cmp dword [ebp - 0x68], 0x10000
je 0x100044dc
cmp ecx, 1
ja 0x100047f0
cmp dword [ebp - 0x48], 0
mov dword [ebp - 0x40], 0xffffffff
mov dword [ebp - 0x14], 0
jbe 0x10004614
mov eax, dword [ebp - 0xc]
mov esi, dword [ebp - 0x14]
xor edx, edx
movzx ecx, byte [esi + eax]
mov dword [ebp - 0x48], ecx
test ecx, ecx
je 0x100045f2
mov edi, dword [ebp + ecx*4 - 0xb8]
mov ebx, ecx
lea eax, [edi + 1]
mov dword [ebp + ecx*4 - 0xb8], eax
nop
mov ecx, edi
add edx, edx
and ecx, 1
shr edi, 1
or edx, ecx
sub ebx, 1
jne 0x10004520
mov ecx, dword [ebp - 0x48]
cmp ecx, 0xa
ja 0x10004571
mov edi, dword [ebp - 0x34]
mov eax, ecx
shl eax, 9
or eax, esi
mov dword [ebp - 0x34], edi
movzx esi, ax
cmp edx, 0x400
jae 0x100045ef
mov eax, 1
mov dword [ebp - 0x34], edi
shl eax, cl
mov ecx, dword [ebp - 0x1c]
mov word [ecx + edx*2], si
add edx, eax
cmp edx, 0x400
jb 0x10004561
jmp 0x100045ef
mov ebx, dword [ebp - 0x1c]
mov eax, edx
and eax, 0x3ff
lea edi, [ebx + eax*2]
mov ebx, dword [ebp - 0x40]
movsx eax, word [edi]
mov dword [ebp - 0x48], eax
test eax, eax
jne 0x10004598
mov word [edi], bx
mov edi, ebx
sub ebx, 2
mov dword [ebp - 0x40], ebx
jmp 0x1000459b
mov edi, dword [ebp - 0x48]
mov eax, dword [ebp - 0x34]
shr edx, 9
mov dword [ebp - 0x34], eax
cmp ecx, 0xb
jbe 0x100045e0
lea esi, [ecx - 0xb]
mov dword [ebp - 0x34], eax
nop
shr edx, 1
mov eax, edx
and eax, 1
sub eax, edi
mov edi, dword [ebp - 0x30]
movzx ecx, word [edi + eax*2 - 2]
test cx, cx
jne 0x100045d2
mov word [edi + eax*2 - 2], bx
mov edi, ebx
sub ebx, 2
jmp 0x100045d5
movsx edi, cx
sub esi, 1
jne 0x100045b0
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x40], ebx
mov eax, dword [ebp - 0x30]
shr edx, 1
and edx, 1
sub edx, edi
mov word [eax + edx*2 - 2], si
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x14]
inc edx
mov dword [ebp - 0x14], edx
mov esi, dword [ecx + 0x18]
cmp edx, dword [ecx + esi*4 + 0x2c]
jb 0x100044f7
mov esi, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x10]
jmp 0x10004617
mov ecx, dword [ebp - 4]
mov eax, dword [ecx + 0x18]
cmp eax, 2
jne 0x10003b15
xor ebx, ebx
jmp 0x1000397b
jne 0x10004634
test ebx, ebx
je case.0x100037d6.12
movsx ecx, byte [eax + 0x1004cc0c]
mov dword [ebp - 0x38], ecx
cmp esi, ecx
jae 0x10003926
jmp case.0x100037d6.13
mov ecx, dword [ebp - 4]
mov dword [ecx], 0x10
jmp 0x100048ae
mov ecx, dword [ebp - 4]
mov dword [ecx], 0x17
jmp 0x100048ae
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], 2
mov dword [eax], 0x18
jmp 0x100048d8
mov ecx, dword [ebp - 4]
mov dword [ecx], 3
jmp 0x100048ae
mov ecx, dword [ebp - 4]
mov dword [ecx], 5
jmp 0x100048ae
mov ecx, dword [ebp - 4]
mov dword [ecx], 6
jmp 0x100048ae
mov dword [ecx], 7
jmp 0x100048ae
mov ecx, dword [ebp - 4]
mov dword [ecx], 0x33
jmp 0x100048ae
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], 2
mov dword [eax], 0x34
jmp 0x100048d8
mov ecx, dword [ebp - 4]
mov dword [ecx], 0x26
jmp 0x100048ae
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], 2
mov dword [eax], 9
jmp 0x100048d8
mov ecx, dword [ebp - 4]
mov dword [ecx], 0xb
jmp 0x100048ae
mov ecx, dword [ebp - 4]
mov dword [ecx], 0xe
jmp 0x100048ae
mov eax, esi
and eax, 7
cmp esi, eax
jae 0x1000473f
nop dword [eax]
cmp edi, dword [ebp - 0x20]
jae 0x10004844
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
add esi, 8
or edx, eax
inc edi
mov eax, esi
and eax, 7
cmp esi, eax
jb case.0x100037d6.20
mov eax, dword [ebp - 0x50]
mov ecx, esi
and ecx, 7
shr edx, cl
sub esi, ecx
cmp edi, eax
jbe 0x1000475d
nop
cmp esi, 8
jb 0x1000475d
dec edi
sub esi, 8
cmp edi, eax
ja 0x10004750
or eax, 0xffffffff
mov ecx, esi
shl eax, cl
not eax
and edx, eax
test byte [ebp + 0x18], 1
je case.0x100037d6.21
xor ebx, ebx
jmp 0x1000486a
mov ecx, dword [ebp - 4]
mov dword [ecx], 0x1a
jmp 0x100048ae
mov ecx, dword [ebp - 4]
mov dword [ecx], 0x1b
jmp 0x100048ae
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], 2
mov dword [eax], 0x35
jmp 0x100048d8
mov ecx, dword [ebp - 4]
mov dword [ecx], 0x19
jmp 0x100048ae
mov ecx, dword [ebp - 4]
mov dword [ecx], 0x12
jmp 0x100048ae
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], 0xffffffff
mov dword [eax], 0x27
jmp 0x100048d8
mov ecx, dword [ebp - 4]
mov dword [ebp - 0xc], 0xffffffff
mov dword [ecx], 0xa
jmp 0x100048d8
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], 0xffffffff
mov dword [eax], 0x23
jmp 0x100048d8
or eax, 0xffffffff
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
mov dword [eax], 0x11
jmp 0x100048d8
or eax, 0xffffffff
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
mov dword [eax], 0x15
jmp 0x100048d8
or eax, 0xffffffff
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
mov dword [eax], 0x25
jmp 0x100048d8
mov ecx, dword [ebp - 4]
mov dword [ecx], 0x20
jmp 0x100048ae
cmp edi, dword [ebp - 0x20]
jae 0x100048a5
movzx ecx, byte [edi]
inc edi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
shl eax, 8
or eax, ecx
mov ecx, dword [ebp - 4]
inc ebx
mov dword [ecx + 0x10], eax
cmp ebx, 4
jae case.0x100037d6.21
test esi, esi
je case.0x100037d6.28
cmp esi, 8
jae 0x1000488f
cmp edi, dword [ebp - 0x20]
jae 0x1000489a
movzx eax, byte [edi]
mov ecx, esi
shl eax, cl
add esi, 8
inc edi
or edx, eax
cmp esi, 8
jb case.0x100037d6.27
movzx ecx, dl
shr edx, 8
sub esi, 8
jmp 0x10004858
mov ecx, dword [ebp - 4]
mov dword [ecx], 0x29
jmp 0x100048ae
mov ecx, dword [ebp - 4]
mov dword [ecx], 0x2a
test byte [ebp + 0x18], 2
mov eax, 0xfffffffc
cmovne eax, dword [ebp - 0x24]
mov dword [ebp - 0xc], eax
cmp eax, 1
je case.0x100037d6.32
cmp eax, 0xfffffffc
je case.0x100037d6.32
jmp 0x100048d8
xor eax, eax
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
mov dword [eax], 0x22
mov eax, dword [ebp - 0x50]
cmp edi, eax
jbe case.0x100037d6.32
nop
cmp esi, 8
jb case.0x100037d6.32
dec edi
sub esi, 8
cmp edi, eax
ja 0x100048e0
mov eax, dword [ebp - 4]
mov ecx, esi
sub edi, dword [ebp - 0x50]
mov dword [eax + 4], esi
or esi, 0xffffffff
shl esi, cl
mov ecx, dword [ebp - 0x28]
not esi
mov dword [eax + 0x20], ecx
and esi, edx
mov ecx, dword [ebp - 0x38]
mov dword [eax + 0x28], ecx
mov ecx, dword [ebp - 0x44]
mov dword [eax + 0x3c], ecx
mov ecx, dword [ebp + 8]
mov dword [eax + 0x24], ebx
mov ebx, dword [ebp - 0xc]
mov dword [eax + 0x38], esi
mov dword [ecx], edi
mov edi, dword [ebp - 0x18]
mov ecx, dword [ebp + 0x14]
sub edi, dword [ebp + 0x10]
test byte [ebp + 0x18], 9
mov dword [ebp - 0x18], edi
mov dword [ecx], edi
je 0x10004aaa
test ebx, ebx
js 0x10004aaa
mov esi, dword [eax + 0x1c]
mov eax, 0x5e6ea9af
mul edi
movzx ecx, si
shr edx, 0xb
imul eax, edx, 0x15b0
mov edx, edi
shr esi, 0x10
mov dword [ebp + 8], esi
sub edx, eax
mov dword [ebp - 0x1c], edx
test edi, edi
je 0x10004a8a
nop dword [eax]
xor edi, edi
cmp edx, 7
jbe 0x100049ed
mov eax, dword [ebp + 0x10]
mov ebx, 7
sub ebx, eax
movzx eax, byte [eax]
add edi, 8
add ecx, eax
mov eax, dword [ebp + 0x10]
add esi, ecx
movzx eax, byte [eax + 1]
add ecx, eax
mov eax, dword [ebp + 0x10]
add esi, ecx
movzx eax, byte [eax + 2]
add ecx, eax
mov eax, dword [ebp + 0x10]
add esi, ecx
movzx eax, byte [eax + 3]
add ecx, eax
mov eax, dword [ebp + 0x10]
add esi, ecx
movzx eax, byte [eax + 4]
add ecx, eax
mov eax, dword [ebp + 0x10]
add esi, ecx
movzx eax, byte [eax + 5]
add ecx, eax
mov eax, dword [ebp + 0x10]
add esi, ecx
movzx eax, byte [eax + 6]
add ecx, eax
mov eax, dword [ebp + 0x10]
add esi, ecx
movzx eax, byte [eax + 7]
add ecx, eax
mov eax, dword [ebp + 0x10]
add eax, 8
add esi, ecx
mov dword [ebp + 0x10], eax
add eax, ebx
cmp eax, edx
mov eax, dword [ebp + 0x10]
jb 0x10004981
mov dword [ebp + 8], esi
xor ebx, ebx
cmp edi, edx
jae 0x10004a4c
mov eax, edx
sub eax, edi
cmp eax, 2
jb 0x10004a37
mov esi, dword [ebp + 0x10]
sub edx, edi
sub edx, 2
shr edx, 1
inc edx
lea eax, [edi + edx*2]
mov edi, ebx
mov dword [ebp - 0x48], eax
nop
movzx eax, byte [esi]
add ecx, eax
movzx eax, byte [esi + 1]
add edi, ecx
add esi, 2
add ecx, eax
add ebx, ecx
sub edx, 1
jne 0x10004a10
mov eax, dword [ebp - 0x48]
mov dword [ebp + 0x10], esi
mov esi, dword [ebp + 8]
cmp eax, dword [ebp - 0x1c]
jae 0x10004a47
jmp 0x10004a39
mov edi, ebx
mov edx, dword [ebp + 0x10]
movzx eax, byte [edx]
add ecx, eax
add esi, ecx
inc edx
mov dword [ebp + 0x10], edx
lea eax, [ebx + edi]
add esi, eax
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
mov eax, 0x80078071
mul esi
shr edx, 0xf
imul eax, edx, 0xffff000f
mov edx, dword [ebp - 0x1c]
add esi, eax
sub dword [ebp - 0x18], edx
mov edx, 0x15b0
mov dword [ebp + 8], esi
mov dword [ebp - 0x1c], edx
jne 0x10004970
mov ebx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
shl esi, 0x10
add esi, ecx
mov dword [eax + 0x1c], esi
test ebx, ebx
jne 0x10004aaa
test byte [ebp + 0x18], 1
je 0x10004aaa
cmp esi, dword [eax + 0x10]
mov ecx, 0xfffffffe
cmovne ebx, ecx
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 8]
pop edi
mov dword [esi], 0
pop esi
mov dword [eax], 0
mov eax, 0xfffffffd
pop ebx
mov esp, ebp
pop ebp
ret