Function at 0x40e637
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc4
mov edx, dword [esp + 0xf0]
mov ebx, dword [esp + 0xec]
mov ebp, dword [esp + 0xe8]
mov eax, dword [esp + 0xe4]
mov ecx, dword [ebx]
and edx, 4
mov esi, eax
not esi
add esi, ebp
add esi, ecx
neg edx
mov edi, 0
sbb edi, edi
or edi, esi
add ecx, ebp
mov dword [esp + 0x20], ecx
lea edx, [edi + 1]
mov dword [esp + 0x14], edx
mov dword [esp + 0x34], edi
and edx, edi
mov ecx, dword [esp + 0xe0]
mov edi, dword [esp + 0xdc]
mov esi, dword [esp + 0xd8]
mov ecx, dword [ecx]
add edi, ecx
cmp ebp, eax
jb 0x40e775
test edx, edx
jne 0x40e775
mov ebx, esi
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov dword [esp], eax
mov eax, dword [esi + 0x38]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x20]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x24]
mov dword [esp + 0xc], eax
mov eax, dword [esi + 0x3c]
mov dword [esp + 0x28], eax
xor esi, esi
dec esi
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x1c], eax
cmp edx, 0x35
ja case.default.0x40e6fb
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0xdc]
mov dword [esp + 8], eax
mov edi, ebp
jmp dword [edx*4 + 0x455ee8]
xor eax, eax
mov dword [ebx + 0xc], eax
mov dword [esp + 4], 0
mov dword [ebx + 8], eax
xor eax, eax
inc eax
mov dword [ebx + 0x1c], eax
mov dword [ebx + 0x10], eax
mov dword [esp + 0x1c], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x18], 0
mov dword [esp], 0
mov eax, dword [esp + 0xf0]
test al, 1
jne case.0x40e6fb.1
mov edi, dword [esp + 0xe8]
mov eax, dword [esp + 0xdc]
mov dword [esp + 8], eax
mov dword [esp + 0x1c], 0
xor ecx, ecx
mov dword [esp + 0x18], 0
mov dword [esp], 0
jmp 0x40eb40
xor eax, eax
mov dword [ebx], eax
mov ecx, dword [esp + 0xe0]
mov dword [ecx], eax
mov esi, 0xfffffffd
jmp 0x40fd1b
test ecx, ecx
jle 0x40e964
mov eax, dword [esp + 0xdc]
lea ecx, [eax + 1]
mov dword [esp + 8], ecx
movzx eax, byte [eax]
mov dword [ebx + 8], eax
mov ecx, dword [esp + 8]
cmp ecx, dword [esp + 0x10]
jae 0x40e940
mov eax, ebx
movzx esi, byte [ecx]
mov dword [ebx + 0xc], esi
mov edi, ecx
mov ecx, dword [ebx + 8]
mov ebx, ecx
shl ebx, 8
or ebx, esi
mov edx, 0x8421085
mov eax, ebx
mul edx
inc edi
mov dword [esp + 8], edi
mov eax, ebx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
mov edx, eax
shl edx, 5
sub eax, edx
add eax, ebx
and esi, 0x20
xor edx, edx
inc edx
mov dword [esp + 0xc], edx
mov edx, 0x24
or esi, eax
mov edi, dword [esp + 0xe8]
jne 0x40e97c
mov ebx, ecx
and ebx, 0xf
mov eax, dword [esp + 0xf0]
test al, 4
jne 0x40e9d0
shr ecx, 4
mov esi, 0x100
shl esi, cl
xor ecx, ecx
cmp esi, 0x8000
mov eax, 0xffffffff
ja 0x40e97f
cmp dword [esp + 0x14], esi
jae 0x40e9d5
jmp 0x40e97f
test ecx, ecx
jle 0x40e98d
mov edx, dword [esp + 0xdc]
movzx eax, byte [edx]
mov esi, dword [esp]
mov ecx, esi
shl eax, cl
mov ecx, esi
inc edx
mov dword [esp + 8], edx
mov edx, dword [esp + 4]
or edx, eax
add ecx, 8
mov edi, dword [esp + 0xe8]
mov eax, ecx
jmp 0x40ebaa
test ecx, ecx
jle 0x40e9a1
mov edx, dword [esp + 0xdc]
movzx eax, byte [edx]
mov esi, dword [esp]
mov ecx, esi
shl eax, cl
mov ecx, esi
inc edx
mov dword [esp + 8], edx
or dword [esp + 4], eax
add ecx, 8
mov edi, dword [esp + 0xe8]
mov dword [esp], ecx
mov edx, dword [esp]
mov ecx, edx
and cl, 7
mov ebx, dword [esp + 4]
shr ebx, cl
and edx, 0xfffffff8
mov ecx, dword [esp + 8]
cmp ecx, dword [esp + 0xdc]
mov dword [esp + 4], ebx
jbe 0x40e906
test edx, edx
je 0x40e906
mov eax, dword [esp + 0xdc]
not eax
add eax, ecx
add edx, 0xfffffff8
mov esi, edx
shr edx, 3
cmp edx, eax
jb 0x40e8f1
mov edx, eax
test eax, eax
je 0x40e8f7
mov eax, edx
mov ecx, eax
not ecx
add dword [esp + 8], ecx
shl eax, 3
mov edx, esi
sub edx, eax
xor esi, esi
dec esi
mov ecx, edx
shl esi, cl
xor eax, eax
mov ecx, 0
mov dword [esp], edx
test dl, 0x20
mov ebx, dword [esp + 0xd8]
jne 0x40e925
mov ecx, esi
not ecx
and dword [esp + 4], ecx
mov ecx, dword [esp + 0xf0]
test cl, 1
je case.0x40e6fb.34
jmp 0x40e9ec
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 2
lea esi, [eax + eax*4]
add esi, 0xfffffffc
mov edi, dword [esp + 0xe8]
jmp case.0x40e6fb.4
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 1
jmp 0x40e9b3
mov edi, ebp
jmp 0x40e9c0
xor eax, eax
dec eax
mov ebx, dword [esp + 0xd8]
mov esi, eax
jmp case.0x40e6fb.36
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 5
jmp 0x40e9b3
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0x20
lea esi, [eax + eax*4]
add esi, 0xfffffffc
mov edi, dword [esp + 0xe8]
mov eax, dword [esp + 0xdc]
mov dword [esp + 8], eax
jmp case.0x40e6fb.4
xor ecx, ecx
xor eax, eax
dec eax
cmp ebx, 8
mov ebx, dword [esp + 0xd8]
mov esi, eax
je 0x40eb40
jmp case.0x40e6fb.36
cmp eax, 3
ja 0x40eabc
mov ecx, dword [esp]
test ecx, ecx
je 0x40ea88
mov dword [esp + 0xc], eax
cmp ecx, 7
ja 0x40ea43
mov edx, dword [esp + 4]
mov esi, dword [esp + 8]
cmp esi, dword [esp + 0x10]
jae 0x40ea62
movzx eax, byte [esi]
mov ecx, dword [esp]
shl eax, cl
inc esi
or edx, eax
lea ebx, [ecx + 8]
cmp ecx, 0xfffffff7
mov dword [esp], ebx
ja 0x40ea11
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov eax, dword [esp + 0xc]
mov dword [esp], ebx
mov ebx, dword [esp + 0xd8]
mov edx, dword [esp]
mov esi, ebx
mov ebx, dword [esp + 4]
movzx ecx, bl
shr ebx, 8
add edx, 0xfffffff8
mov dword [esp + 4], ebx
mov ebx, esi
mov esi, eax
mov dword [esp], edx
jmp 0x40eaa9
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov ebx, dword [esp + 0xd8]
mov dword [ebx], 0x29
jmp 0x40fb6f
mov dword [esp + 0xc], eax
mov dword [esp], 0
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x10]
jae 0x40eac9
movzx ecx, byte [eax]
inc eax
mov dword [esp + 8], eax
mov esi, dword [esp + 0xc]
mov eax, dword [ebx + 0x10]
shl eax, 8
or eax, ecx
mov dword [ebx + 0x10], eax
inc esi
mov eax, esi
jmp 0x40e9ec
mov dword [esp + 0xc], eax
xor esi, esi
mov edx, 0x22
jmp case.0x40e6fb.36
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0x2a
jmp 0x40fb6f
mov dword [ebx], edx
mov ecx, dword [esp + 8]
cmp ecx, dword [esp + 0xdc]
jbe case.0x40e6fb.4
mov edx, esi
mov esi, dword [esp]
cmp esi, 8
jb 0x40eb39
mov eax, dword [esp + 0xdc]
not eax
add eax, ecx
add esi, 0xfffffff8
mov dword [esp], esi
mov ecx, esi
shr ecx, 3
cmp ecx, eax
jb 0x40eb19
mov ecx, eax
test eax, eax
mov esi, edx
je 0x40eb21
mov eax, ecx
mov ecx, eax
not ecx
add dword [esp + 8], ecx
shl eax, 3
mov ecx, dword [esp]
sub ecx, eax
mov dword [esp], ecx
jmp case.0x40e6fb.4
mov esi, edx
jmp case.0x40e6fb.4
mov dword [esp + 0xc], ecx
cmp dword [esp], 2
ja 0x40eb88
mov edx, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp + 0x14], edi
cmp ecx, dword [esp + 0x10]
jae 0x40ebc2
movzx eax, byte [ecx]
mov esi, ecx
mov edi, ebx
mov ebx, dword [esp]
mov ecx, ebx
shl eax, cl
mov ecx, esi
inc ecx
or edx, eax
add ebx, 8
mov dword [esp], ebx
cmp ebx, 3
mov ebx, edi
mov edi, dword [esp + 0x14]
jb 0x40eb56
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov edx, dword [esp + 4]
mov ecx, edx
and ecx, 7
mov dword [ebx + 0x14], ecx
shr edx, 3
add dword [esp], 0xfffffffd
mov eax, ecx
shr eax, 1
mov dword [ebx + 0x18], eax
cmp ecx, 2
jae 0x40ebe1
mov eax, dword [esp]
mov ecx, eax
and cl, 7
shr edx, cl
and eax, 0xfffffff8
mov dword [esp], eax
xor eax, eax
mov ecx, dword [esp + 8]
jmp 0x40ecb2
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 3
jmp 0x40fb6f
mov dword [esp + 4], edx
xor edx, edx
cmp eax, 1
je 0x40ebff
cmp eax, 3
jne 0x40eede
mov edx, 0xa
jmp 0x40edad
lea eax, [ebx + 0x40]
mov dword [ebx + 0x2c], 0x120
mov dword [ebx + 0x30], 0x20
mov ecx, 0x5050505
mov dword [ebx + 0xde0], ecx
mov dword [ebx + 0xde4], ecx
mov dword [ebx + 0xde8], ecx
mov dword [ebx + 0xdec], ecx
mov dword [ebx + 0xdf0], ecx
mov dword [ebx + 0xdf4], ecx
mov dword [ebx + 0xdf8], ecx
mov dword [ebx + 0xdfc], ecx
push 0x90
push 8
push eax
call fcn.00433ea0
add esp, 0xc
lea eax, [ebx + 0xd0]
push 0x70
push 9
push eax
call fcn.00433ea0
add esp, 0xc
mov eax, 0x7070707
mov dword [ebx + 0x140], eax
mov dword [ebx + 0x144], eax
mov dword [ebx + 0x148], eax
mov dword [ebx + 0x14c], eax
mov dword [ebx + 0x150], eax
mov dword [ebx + 0x154], eax
mov eax, 0x8080808
mov dword [ebx + 0x15c], eax
mov dword [ebx + 0x158], eax
xor ecx, ecx
inc ecx
mov edx, dword [esp + 4]
mov eax, dword [esp + 0xc]
jmp 0x40f044
cmp eax, 3
ja 0x40ed41
mov dword [esp + 0xc], eax
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov eax, dword [esp]
test eax, eax
je 0x40ed6b
cmp eax, 7
ja 0x40ed06
mov edx, dword [esp + 4]
mov esi, dword [esp + 8]
cmp esi, dword [esp + 0x10]
jae 0x40ed22
movzx eax, byte [esi]
mov ecx, dword [esp]
shl eax, cl
inc esi
or edx, eax
lea eax, [ecx + 8]
cmp ecx, 0xfffffff7
mov dword [esp], eax
ja 0x40ecdf
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
mov edx, dword [esp + 4]
mov eax, dword [esp + 0xc]
mov byte [ebx + eax + 0x2920], dl
shr edx, 8
add dword [esp], 0xfffffff8
mov ecx, dword [esp + 8]
jmp 0x40ed90
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 6
jmp 0x40fb6f
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
movzx ecx, word [ebx + 0x2920]
movzx eax, word [ebx + 0x2922]
xor eax, 0xffff
mov dword [esp + 0xc], ecx
cmp ecx, eax
je 0x40edb5
mov edx, 0x27
jmp 0x40edad
mov dword [esp], 0
mov ecx, dword [esp + 8]
cmp ecx, dword [esp + 0x10]
mov edx, dword [esp + 4]
mov esi, dword [esp + 0xc]
jae 0x40ed96
mov al, byte [ecx]
inc ecx
mov byte [ebx + esi + 0x2920], al
mov eax, esi
inc eax
jmp 0x40ecb2
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 7
jmp 0x40fb6f
xor esi, esi
dec esi
jmp case.0x40e6fb.36
mov eax, dword [esp + 0xc]
test eax, eax
je 0x40ee5d
mov eax, dword [esp]
test eax, eax
je 0x40ee59
cmp eax, 7
ja 0x40ee00
mov edx, dword [esp + 4]
mov esi, dword [esp + 8]
cmp esi, dword [esp + 0x10]
jae 0x40ee3a
movzx eax, byte [esi]
mov ecx, dword [esp]
shl eax, cl
inc esi
or edx, eax
lea eax, [ecx + 8]
cmp ecx, 0xfffffff7
mov dword [esp], eax
ja 0x40edd9
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
mov eax, dword [esp + 4]
movzx ecx, al
mov dword [esp + 0x18], ecx
shr eax, 8
mov dword [esp + 4], eax
add dword [esp], 0xfffffff8
mov esi, 2
mov edx, 0x34
cmp edi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
jae case.0x40e6fb.36
mov byte [edi], al
inc edi
dec dword [esp + 0xc]
jmp 0x40edb5
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0x33
jmp 0x40fb6f
mov eax, dword [esp + 0xc]
xor ecx, ecx
mov dword [esp + 0xc], eax
test eax, eax
je 0x40f7d3
mov esi, 2
mov edx, 9
cmp edi, dword [esp + 0x20]
jae case.0x40e6fb.36
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x10]
cmp ecx, eax
jae 0x40eec7
mov esi, dword [esp + 0x20]
sub esi, edi
sub eax, ecx
cmp esi, eax
jb 0x40ee99
mov esi, eax
mov eax, dword [esp + 0xc]
cmp esi, eax
jb 0x40eea3
mov esi, eax
push esi
push ecx
push edi
mov ebx, ecx
call fcn.004333a0
mov eax, dword [esp + 0x18]
add esp, 0xc
add ebx, esi
mov dword [esp + 8], ebx
add edi, esi
sub eax, esi
mov ebx, dword [esp + 0xd8]
jmp 0x40ee5d
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0x26
jmp 0x40fb6f
cmp edx, 2
ja 0x40ef93
mov al, byte [edx + 0x455855]
movsx ecx, al
mov dword [esp + 0xc], edx
mov ebp, ecx
cmp dword [esp], ecx
jae 0x40ef37
mov edx, dword [esp + 4]
mov esi, dword [esp + 8]
cmp esi, dword [esp + 0x10]
jae 0x40ef74
movzx eax, byte [esi]
inc esi
mov ecx, dword [esp]
shl eax, cl
or edx, eax
add ecx, 8
mov eax, dword [esp + 0xc]
mov al, byte [eax + 0x455855]
movsx ebp, al
mov dword [esp], ecx
cmp ecx, ebp
jb 0x40ef03
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov edx, dword [esp + 0xc]
xor esi, esi
dec esi
mov ecx, eax
shl esi, cl
not esi
mov ebx, edi
mov edi, dword [esp + 4]
and esi, edi
mov ecx, ebp
shr edi, cl
mov dword [esp + 4], edi
mov edi, ebx
sub dword [esp], ebp
add esi, dword [edx*4 + 0x454e64]
mov eax, dword [esp + 0xd8]
mov dword [eax + edx*4 + 0x2c], esi
mov ebx, dword [esp + 0xd8]
inc edx
jmp 0x40eede
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0xb
jmp 0x40fb6f
lea eax, [ebx + 0x1b80]
push 0x120
push 0
push eax
call fcn.00433ea0
add esp, 0xc
xor eax, eax
mov edx, dword [esp + 4]
cmp eax, dword [ebx + 0x34]
jae 0x40f03a
mov dword [esp + 0xc], eax
mov dword [esp + 4], edx
cmp dword [esp], 2
ja 0x40eff2
mov edx, dword [esp + 4]
mov esi, dword [esp + 8]
cmp esi, dword [esp + 0x10]
jae 0x40f01b
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, 3
jb 0x40efce
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov edx, dword [esp + 4]
mov eax, edx
shr eax, 3
add dword [esp], 0xfffffffd
and dl, 7
mov esi, dword [esp + 0xc]
movzx ecx, byte [esi + 0x455382]
mov byte [ebx + ecx + 0x1b80], dl
inc esi
mov edx, eax
mov eax, esi
jmp 0x40efaf
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0xe
jmp 0x40fb6f
mov dword [ebx + 0x34], 0x13
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x14], edi
test ecx, ecx
js 0x40f241
mov dword [esp + 0xc], eax
mov dword [esp + 4], edx
imul edx, ecx, 0xda0
lea eax, [ebx + edx]
add eax, 0x40
mov ebp, ebx
mov ebx, eax
xor esi, esi
lea edi, [esp + 0x84]
xor eax, eax
mov ecx, 0x10
rep stosd dword es:[edi], eax
mov dword [esp + 0x2c], edx
lea eax, [edx + ebp]
add eax, 0x160
push 0xc80
push 0
push eax
call fcn.00433ea0
add esp, 0xc
mov ecx, dword [ebp + 0x18]
mov ebp, dword [ebp + ecx*4 + 0x2c]
test ebp, ebp
je 0x40f0b1
movzx edx, byte [ebx + esi]
inc dword [esp + edx*4 + 0x84]
inc esi
cmp ebp, esi
jne 0x40f0a1
xor esi, esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x40], esi
xor edi, edi
xor edx, edx
mov eax, dword [esp + esi*4 + 0x88]
add edx, eax
add edi, eax
add edi, edi
mov dword [esp + esi*4 + 0x48], edi
inc esi
cmp esi, 0xf
jne 0x40f0bf
cmp edi, 0x10000
je 0x40f0e7
cmp edx, 1
ja 0x40f24e
mov dword [esp + 0x3c], ebx
test ebp, ebp
mov ebx, dword [esp + 0xd8]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
je 0x40f230
mov ecx, dword [esp + 0x2c]
add ecx, ebx
add ecx, 0x160
mov dword [esp + 0x38], ecx
xor ecx, ecx
dec ecx
mov dword [esp + 0x30], ecx
xor esi, esi
mov ecx, dword [esp + 0x3c]
movzx edx, byte [ecx + esi]
test edx, edx
je 0x40f222
mov dword [esp + 0x24], esi
mov eax, dword [esp + edx*4 + 0x40]
lea ecx, [eax + 1]
mov dword [esp + edx*4 + 0x40], ecx
xor edi, edi
mov ecx, edx
mov esi, edi
mov edi, eax
and edi, 1
lea edi, [edi + esi*2]
add esi, esi
shr eax, 1
dec ecx
jne 0x40f13e
cmp dl, 0xa
mov ebx, dword [esp + 0x30]
ja 0x40f19a
mov eax, edx
shl eax, 9
or eax, dword [esp + 0x24]
cmp edi, 0x3ff
ja 0x40f182
xor esi, esi
inc esi
mov ecx, edx
shl esi, cl
mov ecx, dword [esp + 0x38]
mov word [ecx + edi*2], ax
add edi, esi
cmp edi, 0x400
jb 0x40f174
mov ebx, dword [esp + 0xd8]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x24]
jmp 0x40f222
and edi, 0x3ff
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0x2c]
add eax, ecx
lea ecx, [eax + edi*2]
add ecx, 0x160
movsx edi, word [ecx]
test edi, edi
jne 0x40f1c5
mov word [ecx], bx
mov edi, ebx
add ebx, 0xfffffffe
shr esi, 9
cmp dl, 0xc
jb 0x40f1f8
mov ecx, esi
shr esi, 1
not edi
bt ecx, 1
adc edi, 0
lea ecx, [eax + edi*2]
add ecx, 0x960
movsx edi, word [ecx]
test edi, edi
jne 0x40f1f2
mov word [ecx], bx
mov edi, ebx
add ebx, 0xfffffffe
dec edx
cmp edx, 0xb
ja 0x40f1cd
mov dword [esp + 0x30], ebx
not edi
bt esi, 1
adc edi, 0
mov ecx, dword [esp + 0x24]
mov word [eax + edi*2 + 0x960], cx
mov ebx, dword [esp + 0xd8]
mov esi, ecx
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
inc esi
mov ecx, dword [ebx + 0x18]
cmp esi, dword [ebx + ecx*4 + 0x2c]
jb 0x40f11b
xor ebp, ebp
cmp ecx, 2
mov edx, dword [esp + 4]
jne 0x40f2ef
jmp 0x40f263
mov dword [esp + 4], edx
mov edi, dword [esp + 0x14]
jmp 0x40f917
mov ebx, dword [esp + 0xd8]
mov edi, dword [esp + 0x14]
mov edx, 0x23
jmp 0x40edad
mov esi, ebx
mov ebx, dword [ebx + 0x2c]
mov esi, dword [esi + 0x30]
lea eax, [esi + ebx]
cmp ebp, eax
jae 0x40f29d
mov esi, dword [esp]
cmp esi, 0xe
mov dword [esp + 4], edx
ja 0x40f2f8
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 8]
sub eax, ecx
cmp eax, 1
jg 0x40f2fe
mov dword [esp + 0xc], ebp
mov ebx, dword [esp + 0xd8]
jmp 0x40f34e
mov dword [esp + 4], edx
jne 0x40f339
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0xd8]
lea eax, [edi + 0x40]
lea ecx, [edi + 0x2924]
push ebx
push ecx
push eax
call fcn.004333a0
add esp, 0xc
lea eax, [edi + 0xde0]
lea ecx, [edi + ebx]
add ecx, 0x2924
push esi
mov ebx, edi
mov edi, dword [esp + 0x18]
push ecx
push eax
call fcn.004333a0
add esp, 0xc
mov ecx, dword [ebx + 0x18]
mov eax, ebp
mov edx, dword [esp + 4]
dec ecx
mov dword [ebx + 0x18], ecx
jmp 0x40f044
mov dword [esp + 0xc], ebp
jmp 0x40f32d
movzx eax, byte [ecx]
mov edx, esi
mov ebx, ecx
mov ecx, esi
shl eax, cl
movzx esi, byte [ebx + 1]
add cl, 8
shl esi, cl
or eax, dword [esp + 4]
or eax, esi
add ebx, 2
mov dword [esp + 8], ebx
add edx, 0x10
mov dword [esp + 4], eax
mov dword [esp + 0xc], ebp
mov dword [esp], edx
mov ebx, dword [esp + 0xd8]
jmp 0x40f3df
mov dword [esp + 0xc], ebp
mov ebx, dword [esp + 0xd8]
mov edx, 0x15
jmp 0x40edad
mov eax, dword [esp + 4]
and eax, 0x3ff
movsx eax, word [ebx + eax*2 + 0x1ca0]
test eax, eax
js 0x40f378
movzx ecx, ax
sar eax, 9
cmp ecx, 0x200
jb case.0x40e6fb.16
cmp dword [esp], eax
jae 0x40f3df
jmp case.0x40e6fb.16
cmp dword [esp], 0xb
jb case.0x40e6fb.16
mov ecx, 0xa
not eax
mov edx, dword [esp + 4]
bt edx, ecx
adc eax, 0
movsx eax, word [ebx + eax*2 + 0x24a0]
lea edx, [ecx + 2]
inc ecx
test eax, eax
jns 0x40f3a4
cmp dword [esp], edx
jae 0x40f383
test ax, ax
jns 0x40f3df
mov ecx, dword [esp + 8]
cmp ecx, dword [esp + 0x10]
mov edx, dword [esp + 4]
jae 0x40f527
movzx eax, byte [ecx]
mov esi, ecx
mov ecx, dword [esp]
shl eax, cl
inc esi
mov dword [esp + 8], esi
or edx, eax
mov dword [esp + 4], edx
add ecx, 8
mov dword [esp], ecx
cmp ecx, 0xf
jb 0x40f34e
mov edx, dword [esp + 4]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ebx + eax*2 + 0x1ca0]
test eax, eax
js 0x40f402
mov ecx, eax
sar ecx, 9
and eax, 0x1ff
jmp 0x40f41e
mov ecx, 0xa
not eax
bt edx, ecx
lea ecx, [ecx + 1]
adc eax, 0
movsx eax, word [ebx + eax*2 + 0x24a0]
test eax, eax
js 0x40f407
shr edx, cl
sub dword [esp], ecx
cmp eax, 0xf
mov dword [esp + 0x18], eax
ja 0x40f43d
mov ebp, dword [esp + 0xc]
mov byte [ebx + ebp + 0x2924], al
inc ebp
jmp 0x40f263
mov dword [esp + 4], edx
cmp eax, 0x10
jne 0x40f451
cmp dword [esp + 0xc], 0
je 0x40f53e
mov ecx, eax
add eax, 0xfffffff0
movsx ecx, byte [ecx + 0x455849]
mov dword [esp + 0x1c], ecx
cmp dword [esp], ecx
jae 0x40f49e
mov edx, dword [esp + 4]
mov esi, dword [esp + 8]
cmp esi, dword [esp + 0x10]
jae 0x40f508
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 + 0x1c]
jb 0x40f46e
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov dword [esp + 0x14], edi
xor edx, edx
dec edx
mov ecx, dword [esp + 0x1c]
shl edx, cl
not edx
mov edi, dword [esp + 4]
and edx, edi
shr edi, cl
sub dword [esp], ecx
mov ecx, ebx
movsx esi, byte [eax + 0x45585d]
add esi, edx
mov ebp, dword [esp + 0xc]
lea eax, [ebx + ebp]
add eax, 0x2924
xor ecx, ecx
cmp dword [esp + 0x18], 0x10
jne 0x40f4e6
mov ecx, dword [esp + 0xd8]
mov cl, byte [ebp + ecx + 0x2923]
movzx ecx, cl
push esi
push ecx
push eax
call fcn.00433ea0
add esp, 0xc
add ebp, esi
mov ebx, dword [esp + 0xd8]
mov edx, edi
mov edi, dword [esp + 0x14]
jmp 0x40f263
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0x12
jmp 0x40fb6f
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0x10
jmp 0x40fb6f
mov dword [esp + 0xc], 0
mov dword [esp + 0x18], 0x10
mov edx, 0x11
jmp 0x40edad
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 8]
mov ecx, dword [esp + 0x20]
sub ecx, edi
cmp eax, 4
jl 0x40f673
cmp ecx, 1
jle 0x40f673
mov ecx, dword [esp]
cmp ecx, 0xe
ja 0x40f596
mov esi, dword [esp + 8]
movzx eax, word [esi]
shl eax, cl
or edx, eax
add esi, 2
add ecx, 0x10
mov dword [esp], ecx
jmp 0x40f59a
mov esi, dword [esp + 8]
mov dword [esp + 8], esi
mov eax, edx
and eax, 0x3ff
movsx eax, word [ebx + eax*2 + 0x160]
test eax, eax
js 0x40f5b8
mov ecx, eax
sar ecx, 9
jmp 0x40f5d4
mov ecx, 0xa
not eax
bt edx, ecx
lea ecx, [ecx + 1]
adc eax, 0
movsx eax, word [ebx + eax*2 + 0x960]
test eax, eax
js 0x40f5bd
mov esi, eax
shr edx, cl
mov eax, dword [esp]
sub eax, ecx
mov dword [esp + 0xc], esi
bt esi, 8
jb 0x40f6c2
cmp eax, 0xe
ja 0x40f615
mov esi, dword [esp + 8]
mov dword [esp + 0x14], edi
mov edi, ebx
movzx ebx, word [esi]
mov ecx, eax
shl ebx, cl
mov ecx, esi
or edx, ebx
mov ebx, edi
mov edi, dword [esp + 0x14]
add ecx, 2
add eax, 0x10
mov esi, eax
jmp 0x40f61b
mov esi, eax
mov ecx, dword [esp + 8]
mov dword [esp + 8], ecx
mov eax, edx
and eax, 0x3ff
movsx eax, word [ebx + eax*2 + 0x160]
test eax, eax
js 0x40f639
mov ecx, eax
sar ecx, 9
jmp 0x40f655
mov ecx, 0xa
not eax
bt edx, ecx
lea ecx, [ecx + 1]
adc eax, 0
movsx eax, word [ebx + eax*2 + 0x960]
test eax, eax
js 0x40f63e
shr edx, cl
sub esi, ecx
mov dword [esp], esi
mov ecx, dword [esp + 0xc]
mov byte [edi], cl
bt eax, 8
jb 0x40f6d2
mov byte [edi + 1], al
add edi, 2
jmp 0x40f558
cmp dword [esp], 0xe
mov dword [esp + 4], edx
ja 0x40f76d
cmp eax, 1
jle 0x40f6dc
mov ebx, dword [esp + 8]
movzx eax, byte [ebx]
mov ecx, dword [esp]
mov edx, ecx
shl eax, cl
movzx esi, byte [ebx + 1]
add cl, 8
shl esi, cl
or eax, dword [esp + 4]
or eax, esi
mov esi, dword [esp + 0xd8]
add ebx, 2
mov dword [esp + 8], ebx
mov ebx, esi
add edx, 0x10
mov dword [esp + 4], eax
mov dword [esp], edx
jmp 0x40f76d
mov dword [esp], eax
mov dword [esp + 4], edx
mov eax, dword [esp + 0xc]
jmp 0x40f7c2
mov dword [esp + 4], edx
inc edi
jmp 0x40f7c2
mov eax, dword [esp + 4]
and eax, 0x3ff
movsx eax, word [ebx + eax*2 + 0x160]
test eax, eax
js 0x40f706
movzx ecx, ax
sar eax, 9
cmp ecx, 0x200
jb case.0x40e6fb.23
cmp dword [esp], eax
jae 0x40f76d
jmp case.0x40e6fb.23
cmp dword [esp], 0xb
jb case.0x40e6fb.23
mov ecx, 0xa
not eax
mov edx, dword [esp + 4]
bt edx, ecx
adc eax, 0
movsx eax, word [ebx + eax*2 + 0x960]
lea edx, [ecx + 2]
inc ecx
test eax, eax
jns 0x40f732
cmp dword [esp], edx
jae 0x40f711
test ax, ax
jns 0x40f76d
mov ecx, dword [esp + 8]
cmp ecx, dword [esp + 0x10]
mov edx, dword [esp + 4]
jae 0x40f900
movzx eax, byte [ecx]
mov esi, ecx
mov ecx, dword [esp]
shl eax, cl
inc esi
mov dword [esp + 8], esi
or edx, eax
mov dword [esp + 4], edx
add ecx, 8
mov dword [esp], ecx
cmp ecx, 0xf
jb 0x40f6dc
mov edx, dword [esp + 4]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ebx + eax*2 + 0x160]
test eax, eax
js 0x40f790
mov ecx, eax
sar ecx, 9
and eax, 0x1ff
jmp 0x40f7ac
mov ecx, 0xa
not eax
bt edx, ecx
lea ecx, [ecx + 1]
adc eax, 0
movsx eax, word [ebx + eax*2 + 0x960]
test eax, eax
js 0x40f795
shr edx, cl
mov dword [esp + 4], edx
sub dword [esp], ecx
mov ecx, eax
mov dword [esp + 0xc], eax
cmp eax, 0xff
jbe case.0x40e6fb.24
and eax, 0x1ff
mov ecx, 0x100
cmp eax, 0x100
jne 0x40f806
test byte [ebx + 0x14], 1
mov dword [esp + 0xc], ecx
je 0x40eb40
jmp 0x40e8b2
mov esi, 2
mov edx, 0x18
cmp edi, dword [esp + 0x20]
mov eax, dword [esp + 0xc]
jae case.0x40e6fb.36
mov byte [edi], al
inc edi
jmp 0x40f917
mov ecx, dword [eax*4 + 0x454868]
mov dword [esp + 0xc], ecx
lea ecx, [eax - 0x11d]
mov dword [esp + 0x1c], 0
cmp ecx, 0xffffffec
jae 0x40f82d
mov edx, dword [esp + 4]
mov eax, dword [esp]
jmp 0x40f88a
mov eax, dword [eax*4 + 0x4548e4]
mov dword [esp + 0x1c], eax
cmp dword [esp], eax
jae 0x40f86e
mov edx, dword [esp + 4]
mov esi, dword [esp + 8]
cmp esi, dword [esp + 0x10]
jae 0x40f8e1
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 + 0x1c]
jb 0x40f845
mov dword [esp + 8], esi
mov dword [esp + 4], edx
xor eax, eax
dec eax
mov ecx, dword [esp + 0x1c]
shl eax, cl
not eax
mov edx, dword [esp + 4]
and eax, edx
shr edx, cl
add dword [esp + 0xc], eax
mov eax, dword [esp]
sub eax, ecx
mov dword [esp], eax
cmp eax, 0xe
mov dword [esp + 4], edx
ja 0x40f9b7
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 8]
sub eax, edx
cmp eax, 1
jle 0x40f924
movzx eax, byte [edx]
mov esi, dword [esp]
mov ebp, esi
mov ecx, esi
shl eax, cl
movzx esi, byte [edx + 1]
add cl, 8
shl esi, cl
or eax, dword [esp + 4]
or eax, esi
mov ebx, dword [esp + 0xd8]
add edx, 2
mov dword [esp + 8], edx
add ebp, 0x10
mov dword [esp + 4], eax
mov dword [esp], ebp
jmp 0x40f9b7
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0x19
jmp 0x40fb6f
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0x17
jmp 0x40fb6f
mov dword [esp + 0xc], eax
mov edx, dword [esp + 4]
jmp 0x40f558
mov eax, dword [esp + 4]
and eax, 0x3ff
movsx eax, word [ebx + eax*2 + 0xf00]
test eax, eax
js 0x40f94e
movzx ecx, ax
sar eax, 9
cmp ecx, 0x200
jb case.0x40e6fb.26
cmp dword [esp], eax
jae 0x40f9b7
jmp case.0x40e6fb.26
cmp dword [esp], 0xb
jb case.0x40e6fb.26
mov ecx, 0xa
not eax
mov edx, dword [esp + 4]
bt edx, ecx
adc eax, 0
movsx eax, word [ebx + eax*2 + 0x1700]
lea edx, [ecx + 2]
inc ecx
test eax, eax
jns 0x40f97a
cmp dword [esp], edx
jae 0x40f959
test ax, ax
jns 0x40f9b7
mov ecx, dword [esp + 8]
cmp ecx, dword [esp + 0x10]
mov edx, dword [esp + 4]
jae 0x40fd94
movzx eax, byte [ecx]
mov esi, ecx
mov ecx, dword [esp]
shl eax, cl
inc esi
mov dword [esp + 8], esi
or edx, eax
mov dword [esp + 4], edx
mov eax, ecx
add eax, 8
mov dword [esp], eax
cmp eax, 0xf
jb 0x40f924
mov edx, dword [esp + 4]
mov eax, edx
and eax, 0x3ff
movsx eax, word [ebx + eax*2 + 0xf00]
test eax, eax
js 0x40f9da
mov ecx, eax
sar ecx, 9
and eax, 0x1ff
jmp 0x40f9f6
mov ecx, 0xa
not eax
bt edx, ecx
lea ecx, [ecx + 1]
adc eax, 0
movsx eax, word [ebx + eax*2 + 0x1700]
test eax, eax
js 0x40f9df
shr edx, cl
mov esi, dword [esp]
sub esi, ecx
mov ecx, dword [eax*4 + 0x454d64]
mov dword [esp + 0x18], ecx
lea ecx, [eax - 0x1e]
mov dword [esp + 0x1c], 0
cmp ecx, 0xffffffe6
mov dword [esp + 4], edx
mov dword [esp], esi
jae 0x40fa29
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
jmp 0x40fa92
mov eax, dword [eax*4 + 0x454de4]
mov dword [esp + 0x1c], eax
cmp esi, eax
jae 0x40fa69
mov edx, dword [esp + 4]
mov esi, dword [esp + 8]
cmp esi, dword [esp + 0x10]
jae 0x40fb55
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 + 0x1c]
jb 0x40fa40
mov dword [esp + 8], esi
mov dword [esp + 4], edx
xor eax, eax
dec eax
mov ecx, dword [esp + 0x1c]
shl eax, cl
not eax
mov edx, dword [esp + 4]
and eax, edx
shr edx, cl
mov dword [esp + 4], edx
mov edx, dword [esp]
mov esi, dword [esp + 0x18]
add esi, eax
sub edx, ecx
mov eax, dword [esp + 0xc]
mov dword [esp], edx
mov ecx, edi
sub ecx, dword [esp + 0xe4]
test esi, esi
setne dh
mov dword [esp + 0x28], ecx
mov dword [esp + 0x18], esi
sub ecx, esi
setae dl
and dl, dh
mov ebx, dword [esp + 0xf0]
test bl, 4
je 0x40fac3
test dl, dl
je 0x40fd7f
and ecx, dword [esp + 0x34]
add ecx, dword [esp + 0xe4]
mov esi, edi
mov edx, edi
cmp edi, ecx
mov ebx, dword [esp + 0xd8]
ja 0x40fadf
mov edx, ecx
add edx, eax
cmp edx, dword [esp + 0x20]
jbe 0x40faee
mov ecx, eax
jmp 0x40fdab
cmp eax, 9
jb 0x40fd28
cmp eax, dword [esp + 0x18]
ja 0x40fd28
mov edx, eax
and edx, 0xfffffff8
add edx, ecx
mov esi, dword [ecx]
mov ebx, edi
mov edi, dword [ecx + 4]
mov dword [ebx + 4], edi
mov dword [ebx], esi
add ebx, 8
mov edi, ebx
add ecx, 8
cmp ecx, edx
jb 0x40fb08
mov ebx, edi
and eax, 7
cmp eax, 2
ja 0x40fd2f
test eax, eax
mov esi, dword [esp + 0xd8]
je 0x40fd76
mov dl, byte [ecx]
mov edi, ebx
mov byte [ebx], dl
cmp eax, 1
je 0x40fb4e
mov cl, byte [ecx + 1]
mov byte [edi + 1], cl
add edi, eax
jmp 0x40fd78
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0x1b
lea esi, [eax + eax*4]
add esi, 0xfffffffc
mov ecx, dword [esp]
xor edx, edx
dec edx
shl edx, cl
mov dword [ebx + 4], ecx
xor eax, eax
test cl, 0x20
jne 0x40fb89
mov eax, edx
not eax
mov ecx, dword [esp + 4]
and ecx, eax
mov dword [ebx + 0x38], ecx
mov eax, dword [esp + 0x18]
mov dword [ebx + 0x20], eax
mov eax, dword [esp + 0xc]
mov dword [ebx + 0x24], eax
mov eax, dword [esp + 0x1c]
mov dword [ebx + 0x28], eax
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x3c], eax
mov ecx, dword [esp + 8]
sub ecx, dword [esp + 0xdc]
mov eax, dword [esp + 0xe0]
mov dword [eax], ecx
mov eax, dword [esp + 0xe8]
mov dword [esp], eax
sub edi, dword [esp + 0xe8]
mov eax, dword [esp + 0xec]
mov dword [eax], edi
mov eax, dword [esp + 0xf0]
test al, 9
je 0x40fd1b
test esi, esi
js 0x40fd1b
mov ebp, edi
mov dword [esp + 0x10], esi
mov ecx, dword [ebx + 0x1c]
movzx ebx, cx
shr ecx, 0x10
test edi, edi
je 0x40fce9
mov edx, 0x5e6ea9af
mov esi, ebp
mov eax, ebp
mul edx
shr edx, 0xb
imul eax, edx, 0x15b0
sub esi, eax
xor edx, edx
cmp esi, 8
mov dword [esp + 0x14], ebp
jb 0x40fc97
xor edi, edi
mov ebp, dword [esp]
mov eax, edi
movzx edx, byte [ebp + edi]
add edx, ebx
add ecx, edx
movzx edi, byte [ebp + edi + 1]
add edi, edx
add ecx, edi
movzx edx, byte [ebp + eax + 2]
add edx, edi
add ecx, edx
movzx edi, byte [ebp + eax + 3]
add edi, edx
add ecx, edi
movzx edx, byte [ebp + eax + 4]
add edx, edi
add ecx, edx
movzx edi, byte [ebp + eax + 5]
add edi, edx
add ecx, edi
movzx edx, byte [ebp + eax + 6]
add edx, edi
add ecx, edx
movzx ebx, byte [ebp + eax + 7]
add ebx, edx
add ecx, ebx
lea edi, [eax + 8]
add eax, 0xf
cmp eax, esi
jb 0x40fc32
mov edx, esi
and edx, 0x1ff8
add ebp, edi
mov dword [esp], ebp
mov ebp, dword [esp + 0x14]
mov eax, esi
sub eax, edx
jbe 0x40fcb9
xor edx, edx
mov ebp, dword [esp]
movzx edi, byte [ebp + edx]
add ebx, edi
add ecx, ebx
inc edx
cmp eax, edx
jne 0x40fca2
add ebp, eax
mov dword [esp], ebp
mov ebp, dword [esp + 0x14]
mov eax, ebx
mov edi, 0x80078071
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ebx, eax
mov eax, ecx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
sub ebp, esi
mov esi, 0x15b0
jne 0x40fc22
shl ecx, 0x10
or ecx, ebx
mov edx, dword [esp + 0xd8]
mov dword [edx + 0x1c], ecx
mov esi, dword [esp + 0x10]
test esi, esi
jne 0x40fd1b
xor esi, esi
mov eax, dword [esp + 0xf0]
test al, 1
je 0x40fd1b
xor eax, eax
cmp ecx, dword [edx + 0x10]
sete al
lea esi, [eax + eax]
add esi, 0xfffffffe
mov eax, esi
add esp, 0xc4
pop esi
pop edi
pop ebx
pop ebp
ret
cmp eax, 3
jae 0x40fd3a
jmp 0x40fd58
mov esi, dword [esp + 0xd8]
mov edi, ebx
mov ebx, esi
mov dl, byte [ecx]
mov byte [edi], dl
mov dl, byte [ecx + 1]
mov byte [edi + 1], dl
mov dl, byte [ecx + 2]
mov byte [edi + 2], dl
add edi, 3
add ecx, 3
add eax, 0xfffffffd
cmp eax, 2
ja 0x40fd3a
test eax, eax
je 0x40f917
mov dl, byte [ecx]
mov byte [edi], dl
cmp eax, 1
je 0x40fd6f
mov cl, byte [ecx + 1]
mov byte [edi + 1], cl
add edi, eax
jmp 0x40f917
mov edi, ebx
mov ebx, esi
jmp 0x40f917
mov dword [esp + 0xc], eax
mov ebx, dword [esp + 0xd8]
mov edx, 0x25
jmp 0x40edad
mov eax, dword [esp + 0xf0]
and eax, 2
shr eax, 1
mov dword [ebx], 0x1a
jmp 0x40fb6f
xor eax, eax
dec eax
sub ecx, 1
mov dword [esp + 0xc], ecx
jb 0x40f917
mov esi, 2
mov edx, 0x35
cmp edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
jae case.0x40e6fb.36
lea eax, [ecx + 1]
sub ecx, dword [esp + 0x18]
and ecx, dword [esp + 0x34]
mov edx, dword [esp + 0xe4]
mov cl, byte [edx + ecx]
mov byte [edi], cl
inc edi
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0xc]
jmp 0x40fdab