Function at 0x41f350
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x9a8
mov eax, dword [ebp + 0x24]
push ebx
mov ebx, ecx
push esi
mov ecx, dword [eax]
mov al, byte [0x470e94]
test al, 1
push edi
mov dword [ebp - 0x64], ebx
mov dword [ebp - 0x14], ecx
jne 0x41f39e
mov dl, al
xor eax, eax
or dl, 1
push 0x423090
mov byte [0x470e94], dl
mov word [0x470e9c], ax
mov word [0x470e9a], ax
mov word [0x470e98], ax
call fcn.00436277
add esp, 4
mov al, byte [ebx + 9]
mov ecx, dword [ebp + 0x34]
test al, al
je 0x41f5a5
lea eax, [ecx + 7]
mov esi, dword [ebx + 0x3c]
and al, 0xf8
add esi, 7
imul eax, dword [ebx + 0x34]
cdq
and esi, 0xfffffff8
mov dword [ebx + 0x3c], ecx
idiv esi
mov dl, byte [ebp + 0x38]
mov byte [ebx + 0xb], dl
mov dword [ebx + 0x34], eax
mov ax, word [ebx + 0x18]
cmp ax, word [0x470e98]
jne 0x41f400
mov dx, word [ebx + 0x1a]
cmp dx, word [0x470e9a]
jne 0x41f400
mov ax, word [ebx + 0x1c]
cmp ax, word [0x470e9c]
jne 0x41f400
cmp ecx, dword [0x470fa8]
je 0x41f5a5
xor ecx, ecx
xor edx, edx
mov cl, byte [ebx + 0x1b]
mov dl, byte [ebx + 0x1d]
mov edi, ecx
mov ecx, dword [ebp + 0x34]
add ecx, 0xfffffff1
xor eax, eax
mov al, byte [ebx + 0x19]
cmp ecx, 0x11
mov esi, edx
ja case.0x41f42a.18
xor edx, edx
mov dl, byte [ecx + 0x422fcc]
jmp dword [edx*4 + 0x422fbc]
xor edx, edx
and eax, 0xffff
and esi, 0xffff
and edi, 0xffff
mov dword [ebp + 0x24], edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x6c], edi
mov ecx, 0x470ea0
mov esi, dword [ebp - 0x24]
mov eax, edx
mov edi, esi
and eax, 0xfffffe0f
sar edi, 5
or eax, edi
mov edi, dword [ebp + 0x24]
and edi, 0xfffffe00
add ecx, 4
sar eax, 4
shl edi, 1
or eax, edi
mov edi, dword [ebp - 0x6c]
mov dword [ecx - 4], eax
mov eax, dword [ebp - 0x68]
add edx, edi
mov edi, dword [ebp + 0x24]
add esi, eax
mov eax, dword [ebp - 0x74]
add edi, eax
cmp ecx, 0x470fa4
mov dword [ebp - 0x24], esi
mov dword [ebp + 0x24], edi
jl 0x41f458
jmp case.0x41f42a.18
xor edx, edx
and eax, 0xffff
and esi, 0xffff
and edi, 0xffff
mov dword [ebp + 0x24], edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x6c], edi
mov ecx, 0x470ea0
mov esi, dword [ebp - 0x24]
mov eax, edx
mov edi, esi
and al, 7
sar edi, 6
or eax, edi
mov edi, dword [ebp + 0x24]
and edi, 0xfffffe00
add ecx, 4
sar eax, 3
shl edi, 2
or eax, edi
mov edi, dword [ebp - 0x6c]
mov dword [ecx - 4], eax
mov eax, dword [ebp - 0x68]
add edx, edi
mov edi, dword [ebp + 0x24]
add esi, eax
mov eax, dword [ebp - 0x74]
add edi, eax
cmp ecx, 0x470fa4
mov dword [ebp - 0x24], esi
mov dword [ebp + 0x24], edi
jl 0x41f4cb
jmp case.0x41f42a.18
xor edx, edx
and esi, 0xffff
and edi, 0xffff
and eax, 0xffff
mov dword [ebp + 0x24], edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x74], esi
mov dword [ebp - 0x68], edi
mov dword [ebp - 0x6c], eax
mov ecx, 0x470ea0
mov eax, dword [ebp - 0x24]
mov esi, edx
and esi, 0xffffffc0
mov edi, eax
shl esi, 8
and edi, 0xffffffc0
add ecx, 4
or esi, edi
mov edi, dword [ebp + 0x24]
shl esi, 2
sar edi, 6
or esi, edi
mov edi, dword [ebp - 0x6c]
mov dword [ecx - 4], esi
mov esi, dword [ebp - 0x68]
add eax, esi
add edx, edi
mov edi, dword [ebp + 0x24]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x74]
add edi, eax
cmp ecx, 0x470fa4
mov dword [ebp + 0x24], edi
jl 0x41f539
mov ecx, dword [ebx + 0x3c]
mov dword [0x470fa8], ecx
mov dx, word [ebx + 0x18]
mov word [0x470e98], dx
mov ax, word [ebx + 0x1a]
mov word [0x470e9a], ax
mov cx, word [ebx + 0x1c]
mov word [0x470e9c], cx
mov eax, dword [ebp + 0x40]
test eax, eax
jne 0x41f5d0
mov ecx, ebx
call fcn.0041e920
mov ecx, dword [ebx + 0x28]
mov edi, dword [ebx + 0x34]
movsx edx, word [ebx + 0x3c]
mov dword [ebp + 0x40], eax
mov eax, dword [ebx + 0x30]
sub eax, ecx
mov dword [ebp + 0x44], edi
mov dword [ebp + 0x48], eax
mov dword [ebp + 0x4c], edx
jmp 0x41f5d3
mov edi, dword [ebp + 0x44]
cmp dword [ebp + 0x4c], 8
jg 0x41f649
cmp byte [ebp - 0x14], 2
jne 0x41f649
mov ecx, ebx
mov byte [ebp - 0x14], 0x20
call fcn.0041ea20
mov esi, eax
test esi, esi
jne 0x41f5fb
call fcn.0041ca60
mov esi, eax
test esi, esi
je 0x41f649
movzx ax, byte [ebp - 0x13]
mov ecx, eax
shl ecx, 8
add ecx, eax
movzx ax, byte [ebp - 0x12]
mov edx, eax
mov word [ebp - 0x70], cx
shl edx, 8
add edx, eax
movzx ax, byte [ebp - 0x11]
mov ecx, eax
mov word [ebp - 0x6e], dx
shl ecx, 8
add ecx, eax
lea edx, [ebp - 0x70]
mov word [ebp - 0x6c], cx
push edx
mov ecx, esi
call fcn.0041c3c0
test eax, eax
jl 0x41f641
mov byte [ebp - 0x14], 1
mov byte [ebp - 0x13], al
mov eax, dword [esi + 8]
lea ecx, [esi + 8]
call dword [eax]
mov ecx, dword [ebp + 0x4c]
mov al, byte [ebx + 9]
add ecx, 7
sar ecx, 3
test al, al
je 0x41f663
test byte [ebx + 0x40], 3
jne case.0x41fdd5.13
mov eax, dword [ebp + 8]
test eax, eax
je case.0x41fdd5.13
test edi, edi
jle case.0x41fdd5.13
mov esi, dword [ebp + 0xc]
test esi, esi
jle case.0x41fdd5.13
mov eax, edi
cdq
idiv ecx
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp + 0x2c]
cdq
idiv ecx
mov dword [ebp + 0x24], eax
mov eax, esi
cdq
idiv ecx
mov esi, dword [ebp + 0x1c]
mov edx, dword [esi]
mov dword [ebp - 0x84], edx
mov edx, dword [esi + 8]
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x68], eax
mov eax, dword [esi + 4]
mov dword [ebp - 0x80], eax
mov eax, dword [esi + 0xc]
mov dword [ebp - 0x78], eax
mov eax, dword [ebp + 0x20]
xor esi, esi
mov edi, dword [eax + 4]
mov edx, dword [eax]
mov dword [ebp - 0xa4], edi
mov edi, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0xa0], edi
mov edi, dword [ebp + 0x3c]
mov dword [ebp - 0x88], esi
test edi, edi
mov dword [ebp - 0x90], esi
mov dword [ebp - 0x8c], esi
mov dword [ebp - 0x9c], eax
je 0x41f70f
mov eax, dword [edi + 4]
mov esi, dword [edi]
mov dword [ebp - 0x90], eax
mov eax, dword [edi + 8]
mov dword [ebp - 0x8c], eax
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x88], eax
mov eax, dword [ebp - 0x84]
test eax, eax
jge 0x41f727
sub edx, eax
sub esi, eax
mov dword [ebp - 0x84], 0
mov eax, dword [ebp - 0x80]
test eax, eax
jge 0x41f754
mov edi, dword [ebp - 0xa4]
mov dword [ebp - 0x80], 0
sub edi, eax
mov dword [ebp - 0xa4], edi
mov edi, dword [ebp - 0x90]
sub edi, eax
mov dword [ebp - 0x90], edi
mov edi, dword [ebp + 0x3c]
test edx, edx
jge 0x41f76a
mov eax, dword [ebp - 0x84]
sub esi, edx
sub eax, edx
xor edx, edx
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0xa4]
test eax, eax
jge 0x41f795
mov edi, dword [ebp - 0x80]
sub edi, eax
mov dword [ebp - 0x80], edi
mov edi, dword [ebp - 0x90]
sub edi, eax
xor eax, eax
mov dword [ebp - 0x90], edi
mov edi, dword [ebp + 0x3c]
mov dword [ebp - 0xa4], eax
test edi, edi
je 0x41f7f9
test esi, esi
jge 0x41f7af
mov edi, dword [ebp - 0x84]
sub edx, esi
sub edi, esi
xor esi, esi
mov dword [ebp - 0x84], edi
mov edi, dword [ebp - 0x90]
test edi, edi
jge 0x41f7d3
sub eax, edi
mov dword [ebp - 0x90], 0
mov dword [ebp - 0xa4], eax
mov eax, dword [ebp - 0x80]
sub eax, edi
mov dword [ebp - 0x80], eax
mov eax, dword [ebp + 0x24]
mov edi, dword [ebp - 0x8c]
cmp edi, eax
jle 0x41f7e6
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp + 0x30]
mov edi, dword [ebp - 0x88]
cmp edi, eax
jle 0x41f7f9
mov dword [ebp - 0x88], eax
mov eax, dword [ebp - 0x6c]
mov edi, dword [ebp - 0x7c]
cmp edi, eax
jle 0x41f806
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x68]
mov edi, dword [ebp - 0xa0]
cmp edi, eax
jle 0x41f819
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp + 0x48]
mov edi, dword [ebp - 0x78]
cmp edi, eax
jle 0x41f826
mov dword [ebp - 0x78], eax
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp - 0x9c]
cmp edi, eax
jle 0x41f839
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0xa0]
mov edi, dword [ebp - 0x84]
sub eax, edx
mov dword [ebp + 0x24], eax
mov eax, dword [ebp - 0x7c]
sub eax, edi
mov edi, dword [ebp + 0x24]
cmp eax, edi
mov dword [ebp - 0x1c], eax
jle 0x41f85c
mov dword [ebp - 0x1c], edi
mov eax, dword [ebp - 0x9c]
mov edi, dword [ebp - 0xa4]
sub eax, edi
mov edi, dword [ebp - 0x80]
mov dword [ebp + 0x24], eax
mov eax, dword [ebp - 0x78]
sub eax, edi
mov edi, dword [ebp + 0x24]
cmp eax, edi
mov dword [ebp - 0xc], eax
jle 0x41f882
mov dword [ebp - 0xc], edi
mov eax, dword [ebp + 0x3c]
test eax, eax
je 0x41f8b3
mov eax, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x1c]
sub eax, esi
cmp edi, eax
jle 0x41f89b
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x88]
mov edi, dword [ebp - 0x90]
sub eax, edi
mov edi, dword [ebp - 0xc]
cmp edi, eax
jle 0x41f8b3
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
test eax, eax
jle case.0x41fdd5.13
mov eax, dword [ebp - 0x1c]
test eax, eax
jle case.0x41fdd5.13
imul eax, ecx
imul esi, ecx
mov edi, dword [ebp + 0x44]
add esi, dword [ebp + 0x28]
sub edi, eax
imul edx, ecx
mov dword [ebp - 8], edi
mov edi, dword [ebp + 0x2c]
sub edi, eax
mov dword [ebp - 0x20], esi
mov dword [ebp - 4], edi
mov edi, dword [ebp + 0xc]
sub edi, eax
mov esi, dword [ebp + 8]
mov dword [ebp + 0x24], edi
mov edi, dword [ebp - 0x84]
imul edi, ecx
mov cl, byte [ebx + 0xb]
add edi, dword [ebp + 0x40]
add edx, esi
test cl, cl
mov esi, edx
je 0x41f92e
mov ecx, dword [ebp + 0x48]
mov edx, dword [ebp - 0x80]
sub ecx, edx
mov edx, dword [ebp + 0x44]
dec ecx
imul ecx, edx
add edi, ecx
lea ecx, [edx + edx]
mov edx, dword [ebp - 8]
mov dword [ebp - 0x98], edi
sub edx, ecx
mov dword [ebp - 8], edx
jmp 0x41f93d
mov edx, dword [ebp - 0x80]
imul edx, dword [ebp + 0x44]
add edi, edx
mov dword [ebp - 0x98], edi
mov cl, byte [ebp + 0x38]
test cl, cl
je 0x41f96c
mov ecx, dword [ebp + 0x30]
mov edx, dword [ebp - 0x90]
sub ecx, edx
mov edx, dword [ebp - 0x20]
dec ecx
imul ecx, dword [ebp + 0x2c]
add edx, ecx
mov dword [ebp - 0x20], edx
mov edx, dword [ebp + 0x2c]
lea ecx, [edx + edx]
mov edx, dword [ebp - 4]
sub edx, ecx
mov dword [ebp - 4], edx
jmp 0x41f97e
mov ecx, dword [ebp - 0x90]
mov edx, dword [ebp - 0x20]
imul ecx, dword [ebp + 0x2c]
add edx, ecx
mov dword [ebp - 0x20], edx
mov cl, byte [ebp + 0x18]
test cl, cl
je 0x41f9a8
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp - 0xa4]
sub edx, ecx
mov ecx, dword [ebp + 0xc]
dec edx
imul edx, ecx
add esi, edx
mov edx, dword [ebp + 0x24]
add ecx, ecx
mov dword [ebp + 0x44], esi
sub edx, ecx
mov dword [ebp + 0x24], edx
jmp 0x41f9b7
mov ecx, dword [ebp - 0xa4]
imul ecx, dword [ebp + 0xc]
add esi, ecx
mov dword [ebp + 0x44], esi
mov ecx, esi
and ecx, 3
neg ecx
and ecx, 3
cmp ecx, eax
jle 0x41f9c7
mov ecx, eax
mov edx, eax
mov dword [ebp + 0x48], ecx
sub edx, ecx
sar edx, 2
mov dword [ebp - 0x18], edx
shl edx, 2
sub eax, edx
sub eax, ecx
mov dword [ebp + 0x40], eax
mov eax, dword [ebp - 0x14]
and eax, 0xff
dec eax
cmp eax, 0x1f
ja case.0x41fdd5.13
xor edx, edx
mov dl, byte [eax + 0x422ffc]
jmp dword [edx*4 + 0x422fe0]
mov eax, dword [ebp + 0x40]
mov edx, dword [ebp - 8]
add edi, ecx
add esi, ecx
add eax, ecx
mov ecx, dword [ebp + 0x24]
add edx, eax
add ecx, eax
mov dword [ebp - 8], edx
mov edx, dword [ebp - 0xc]
mov dword [ebp + 0x4c], edi
mov dword [ebp + 0x44], esi
mov dword [ebp + 0x24], ecx
mov eax, dword [ebp + 0x48]
dec eax
je 0x41fa39
dec eax
je 0x41fa33
dec eax
jne 0x41fa3f
mov cl, byte [edi - 3]
mov byte [esi - 3], cl
mov al, byte [edi - 2]
mov byte [esi - 2], al
mov cl, byte [edi - 1]
mov byte [esi - 1], cl
cld
mov ecx, dword [ebp - 0x18]
mov esi, dword [ebp + 0x4c]
mov edi, dword [ebp + 0x44]
rep movsd dword es:[edi], dword [esi]
mov dword [ebp + 0x4c], esi
mov dword [ebp + 0x44], edi
mov eax, dword [ebp + 0x40]
mov edi, dword [ebp + 0x4c]
mov esi, dword [ebp + 0x44]
dec eax
je 0x41fa6f
dec eax
je 0x41fa69
dec eax
jne 0x41fa73
mov al, byte [edi + 2]
mov byte [esi + 2], al
mov cl, byte [edi + 1]
mov byte [esi + 1], cl
mov al, byte [edi]
mov byte [esi], al
mov ebx, dword [ebp - 8]
mov ecx, dword [ebp + 0x24]
add edi, ebx
add esi, ecx
dec edx
mov dword [ebp + 0x4c], edi
mov dword [ebp + 0x44], esi
jne 0x41fa21
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov ebx, dword [ebp - 0x13]
add edi, ecx
and ebx, 0xff
add esi, ecx
mov eax, ebx
mov edx, ebx
shl eax, 0x10
mov dword [ebp + 0x18], eax
mov eax, ebx
shl eax, 0x18
mov dword [ebp + 0x14], eax
mov eax, ebx
shl edx, 8
or eax, edx
mov dword [ebp + 0x20], edx
mov edx, dword [ebp + 0x40]
shl eax, 8
or eax, ebx
shl eax, 8
or eax, ebx
mov dword [ebp + 8], eax
lea eax, [edx + ecx]
mov edx, dword [ebp - 8]
add edx, eax
mov dword [ebp - 8], edx
mov edx, dword [ebp + 0x24]
add edx, eax
mov eax, dword [ebp - 0xc]
mov dword [ebp + 0x24], edx
mov dword [ebp + 0x10], eax
mov eax, ecx
dec eax
je 0x41fb06
dec eax
je 0x41faf9
dec eax
jne 0x41fb13
mov al, byte [edi - 3]
mov dl, byte [ebp - 0x13]
cmp al, dl
je 0x41faf9
mov byte [esi - 3], al
mov al, byte [edi - 2]
mov dl, byte [ebp - 0x13]
cmp al, dl
je 0x41fb06
mov byte [esi - 2], al
mov al, byte [edi - 1]
mov dl, byte [ebp - 0x13]
cmp al, dl
je 0x41fb13
mov byte [esi - 1], al
mov eax, dword [ebp - 0x18]
test eax, eax
jle 0x41fb88
mov dword [ebp + 0xc], eax
mov eax, dword [edi]
mov edx, dword [ebp + 8]
add edi, 4
cmp eax, edx
je 0x41fb7c
mov edx, dword [esi]
mov ecx, eax
and ecx, 0xff
cmp ecx, ebx
je 0x41fb3c
and dl, 0
or edx, ecx
mov ecx, eax
and ecx, 0xff00
cmp ecx, dword [ebp + 0x20]
je 0x41fb4e
and dh, 0
or edx, ecx
mov ecx, eax
and ecx, 0xff0000
cmp ecx, dword [ebp + 0x18]
je 0x41fb63
and edx, 0xff00ffff
or edx, ecx
mov ecx, dword [ebp + 0x14]
and eax, 0xff000000
cmp eax, ecx
je 0x41fb77
and edx, 0xffffff
or edx, eax
mov ecx, dword [ebp + 0x48]
mov dword [esi], edx
mov eax, dword [ebp + 0xc]
add esi, 4
dec eax
mov dword [ebp + 0xc], eax
jne 0x41fb1d
mov eax, dword [ebp + 0x40]
dec eax
je 0x41fbae
dec eax
je 0x41fba1
dec eax
jne 0x41fbb9
mov al, byte [edi + 2]
mov dl, byte [ebp - 0x13]
cmp al, dl
je 0x41fba1
mov byte [esi + 2], al
mov al, byte [edi + 1]
mov dl, byte [ebp - 0x13]
cmp al, dl
je 0x41fbae
mov byte [esi + 1], al
mov al, byte [edi]
mov dl, byte [ebp - 0x13]
cmp al, dl
je 0x41fbb9
mov byte [esi], al
mov eax, dword [ebp - 8]
mov edx, dword [ebp + 0x24]
add edi, eax
mov eax, dword [ebp + 0x10]
add esi, edx
dec eax
mov dword [ebp + 0x10], eax
jne 0x41fae1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov eax, dword [ebp + 0x4c]
cmp eax, 0xf
je 0x41fc9e
cmp eax, 0x10
je 0x41fc9e
cmp eax, 0x18
jne case.0x41fdd5.13
mov al, byte [ebp - 0x13]
mov cl, byte [ebp - 0x11]
mov dl, byte [ebp - 0x12]
mov byte [ebp + 0xb], al
mov eax, dword [ebp - 0x1c]
mov byte [ebp + 0xf], cl
dec eax
mov byte [ebp + 0x13], dl
mov dword [ebp - 0x1c], eax
xor edx, edx
mov dl, byte [ebp + 0xb]
shl edx, 8
mov dl, byte [ebp + 0x13]
shl edx, 8
mov dl, byte [ebp + 0xf]
mov edi, dword [ebp + 0x44]
mov esi, dword [ebp - 0x98]
sub esi, edi
mov ebx, dword [ebp - 0xc]
dec ebx
je 0x41fc71
mov ecx, dword [ebp - 0x1c]
cmp ecx, 0
je 0x41fc4e
mov eax, dword [esi + edi]
and eax, 0xffffff
cmp eax, edx
je 0x41fc48
mov dword [edi], eax
add edi, 3
dec ecx
jne 0x41fc3a
mov eax, dword [esi + edi]
and eax, 0xffffff
cmp eax, edx
je 0x41fc63
mov word [edi], ax
shr eax, 0x10
mov byte [edi + 2], al
add edi, 3
add esi, dword [ebp - 8]
sub esi, dword [ebp + 0x24]
add edi, dword [ebp + 0x24]
jmp 0x41fc2f
mov ecx, dword [ebp - 0x1c]
inc ecx
xor eax, eax
mov ax, word [esi + edi + 1]
shl eax, 8
mov al, byte [esi + edi]
cmp eax, edx
je 0x41fc8f
mov word [edi], ax
shr eax, 0x10
mov byte [edi + 2], al
add edi, 3
dec ecx
jne 0x41fc75
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
movzx ax, byte [ebp - 0x13]
mov edx, eax
shl edx, 8
add edx, eax
movzx ax, byte [ebp - 0x12]
mov word [ebp - 0x70], dx
mov edx, eax
shl edx, 8
add edx, eax
movzx ax, byte [ebp - 0x11]
mov word [ebp - 0x6e], dx
mov edx, eax
shl edx, 8
add edx, eax
mov word [ebp - 0x6c], dx
mov eax, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x6e]
and eax, 0xffff
shr eax, 5
and edx, 0xf800
or eax, edx
mov edx, dword [ebp - 0x70]
shr eax, 5
and edx, 0xf800
or eax, edx
mov edx, dword [ebp + 0x40]
mov ebx, eax
and al, 0xfe
shl eax, 0xf
shr ebx, 1
mov dword [ebp + 0x20], eax
or eax, ebx
mov dword [ebp + 8], eax
lea eax, [ecx + edi]
lea edi, [ecx + esi]
mov esi, dword [ebp - 8]
add edx, ecx
add esi, edx
mov dword [ebp - 8], esi
mov esi, dword [ebp + 0x24]
add esi, edx
mov edx, dword [ebp - 0xc]
mov dword [ebp + 0x10], edx
mov edx, dword [ebp - 0x18]
mov dword [ebp + 0x24], esi
jmp 0x41fd2f
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp + 0x48]
test ecx, ecx
je 0x41fd40
mov cx, word [eax - 2]
cmp cx, bx
je 0x41fd40
mov word [edi - 2], cx
test edx, edx
jle 0x41fd8c
mov dword [ebp + 0xc], edx
mov edx, dword [eax]
mov ecx, dword [ebp + 8]
add eax, 4
cmp edx, ecx
je 0x41fd80
mov esi, dword [edi]
mov ecx, edx
and ecx, 0xffff
cmp ecx, ebx
je 0x41fd69
and esi, 0xffff0000
or esi, ecx
mov ecx, dword [ebp + 0x20]
and edx, 0xffff0000
cmp edx, ecx
je 0x41fd7e
and esi, 0xffff
or esi, edx
mov dword [edi], esi
mov ecx, dword [ebp + 0xc]
add edi, 4
dec ecx
mov dword [ebp + 0xc], ecx
jne 0x41fd47
mov ecx, dword [ebp + 0x40]
test ecx, ecx
je 0x41fd9e
mov cx, word [eax]
cmp cx, bx
je 0x41fd9e
mov word [edi], cx
mov esi, dword [ebp - 8]
mov edx, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x10]
add eax, esi
add edi, edx
dec ecx
mov dword [ebp + 0x10], ecx
jne 0x41fd29
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov eax, dword [ebp + 0x4c]
add eax, 0xfffffff8
cmp eax, 0x18
ja case.0x41fdd5.13
xor ecx, ecx
mov cl, byte [eax + 0x423034]
jmp dword [ecx*4 + 0x42301c]
mov eax, dword [ebp - 0x12]
and eax, 0xff
mov ecx, eax
shl ecx, 8
mov dword [ebp + 0x4c], ecx
mov ecx, 0x3f
sub ecx, eax
mov eax, dword [ebx + 0x14]
shl ecx, 8
test eax, eax
mov dword [ebp - 0x68], ecx
je 0x41fe0c
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x64], eax
inc edx
mov dword [eax + 0xc], edx
jmp 0x41fe17
call fcn.0041ca60
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x64], eax
mov edx, dword [eax + 0x24]
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x6c], eax
mov al, byte [ebx + 9]
lea ecx, [edx + ecx*2]
mov dword [ebp - 0x24], edx
test al, al
movzx ax, byte [ebp - 0x12]
mov dword [ebp - 0x74], ecx
je 0x420073
test ax, ax
jne 0x41fe9d
mov edx, dword [ebp + 0x38]
mov eax, dword [ebp + 0x34]
mov ecx, dword [ebp + 0x30]
push edx
mov edx, dword [ebp + 0x2c]
push eax
mov eax, dword [ebp + 0x28]
push ecx
push edx
mov edx, dword [ebp + 0x20]
push eax
mov eax, dword [ebp + 0x3c]
push 0
push 0
push 0
push 0
push 0
lea ecx, [ebp - 0x30]
push 0
push ecx
mov ecx, dword [ebp + 0x18]
push edx
mov edx, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, dword [ebp + 0xc]
push edx
mov edx, dword [ebp + 8]
push eax
push ecx
push edx
mov ecx, ebx
mov byte [ebp - 0x30], 0x20
call fcn.0041f350
mov eax, dword [ebp - 0x64]
mov edx, dword [eax + 8]
lea ecx, [eax + 8]
call dword [edx]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
cmp ax, 0x3f
jne 0x41fee8
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
push 0xff
push 0
and eax, 0xff
push 0
push eax
mov eax, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
mov edx, dword [ebp + 0x20]
lea ecx, [ebx + 0x18]
push eax
push ecx
push edx
mov ecx, ebx
call fcn.00423e00
mov eax, dword [ebp - 0x64]
mov edx, dword [eax + 8]
lea ecx, [eax + 8]
call dword [edx]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov eax, dword [ebx + 0x20]
test eax, eax
jge 0x41ff09
mov ecx, dword [ebp - 0x64]
lea eax, [ebx + 0x18]
push eax
call fcn.0041c3c0
test eax, eax
mov dword [ebx + 0x20], eax
jge 0x41ff09
mov dword [ebx + 0x20], 0
mov edx, dword [ebp + 0x4c]
mov eax, dword [ebp - 0x24]
xor ecx, ecx
mov cl, byte [ebx + 0x20]
mov ebx, dword [ebp - 0x74]
add ecx, edx
xor edx, edx
mov dx, word [eax + ecx*2]
mov eax, dword [ebp - 0x6c]
add edx, eax
xor eax, eax
xor ecx, ecx
add eax, 2
mov cx, word [ebx]
inc esi
add ebx, 4
cmp eax, 0x100
mov cl, byte [ecx + edx]
mov byte [ebp + eax - 0x1aa], cl
mov byte [esi - 1], cl
jl 0x41ff26
mov ecx, dword [ebp + 0x48]
mov edx, dword [ebp + 0x40]
mov ebx, dword [ebp - 8]
add edi, ecx
lea eax, [edx + ecx]
mov edx, dword [ebp + 0x24]
add esi, ecx
add ebx, eax
add edx, eax
mov eax, dword [ebp - 0xc]
mov dword [ebp + 0x24], edx
mov edx, dword [ebp - 0x18]
mov dword [ebp - 8], ebx
mov dword [ebp + 0x10], eax
mov eax, ecx
dec eax
je 0x41ff95
dec eax
je 0x41ff86
dec eax
jne 0x41ffa4
xor eax, eax
mov al, byte [edi - 3]
mov al, byte [ebp + eax - 0x1a8]
mov byte [esi - 3], al
xor eax, eax
mov al, byte [edi - 2]
mov al, byte [ebp + eax - 0x1a8]
mov byte [esi - 2], al
xor eax, eax
mov al, byte [edi - 1]
mov al, byte [ebp + eax - 0x1a8]
mov byte [esi - 1], al
test edx, edx
jle 0x420011
mov dword [ebp + 0xc], edx
mov eax, dword [edi]
xor edx, edx
mov ecx, eax
and eax, 0xffffff
shr ecx, 0x18
xor ebx, ebx
add edi, 4
mov dl, byte [ebp + ecx - 0x1a8]
add esi, 4
mov ecx, edx
mov edx, eax
shr edx, 0x10
and eax, 0xffff
mov bl, byte [ebp + edx - 0x1a8]
mov edx, eax
shl ecx, 0x18
shl ebx, 0x10
or ecx, ebx
xor ebx, ebx
shr edx, 8
and eax, 0xff
mov bh, byte [ebp + edx - 0x1a8]
mov bl, byte [ebp + eax - 0x1a8]
mov eax, dword [ebp + 0xc]
or ebx, ecx
dec eax
mov dword [esi - 4], ebx
mov dword [ebp + 0xc], eax
jne 0x41ffab
mov ecx, dword [ebp + 0x48]
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp + 0x40]
dec eax
je 0x42003b
dec eax
je 0x42002c
dec eax
jne 0x420048
xor eax, eax
mov al, byte [edi + 2]
mov al, byte [ebp + eax - 0x1a8]
mov byte [esi + 2], al
xor eax, eax
mov al, byte [edi + 1]
mov al, byte [ebp + eax - 0x1a8]
mov byte [esi + 1], al
xor eax, eax
mov al, byte [edi]
mov al, byte [ebp + eax - 0x1a8]
mov byte [esi], al
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 0x24]
add edi, eax
mov eax, dword [ebp + 0x10]
add esi, ebx
dec eax
mov dword [ebp + 0x10], eax
jne 0x41ff6c
mov eax, dword [ebp - 0x64]
mov edx, dword [eax + 8]
lea ecx, [eax + 8]
call dword [edx]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
test ax, ax
jne 0x4200d7
mov ecx, dword [ebp + 0x38]
mov edx, dword [ebp + 0x34]
mov eax, dword [ebp + 0x30]
push ecx
mov ecx, dword [ebp + 0x2c]
push edx
mov edx, dword [ebp + 0x28]
push eax
push ecx
mov ecx, dword [ebp + 0x20]
push edx
mov edx, dword [ebp + 0x3c]
push 0
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x60]
push 0
push eax
mov eax, dword [ebp + 0x18]
push ecx
mov ecx, dword [ebp + 0x14]
push edx
mov edx, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 8]
push edx
push eax
push ecx
mov ecx, ebx
mov byte [ebp - 0x60], 0x20
call fcn.0041f350
mov eax, dword [ebp - 0x64]
mov edx, dword [eax + 8]
lea ecx, [eax + 8]
call dword [edx]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
cmp ax, 0x3f
jne 0x420132
push 0
push 0
push 0
mov eax, dword [ebp + 0x20]
push 0
mov ecx, dword [ebp + 0x1c]
push 0
push 0
push 0
push 0
push 0
push 0
lea edx, [ebp - 0x34]
push 0
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
mov ecx, ebx
mov byte [ebp - 0x34], 0x20
call fcn.0041f350
mov eax, dword [ebp - 0x64]
mov edx, dword [eax + 8]
lea ecx, [eax + 8]
call dword [edx]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x68]
sub eax, ecx
mov ecx, dword [ebp - 0x74]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x4c]
mov dword [ebp - 0x24], ecx
sub eax, edx
mov dword [ebp + 0x4c], eax
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x98]
sub esi, edi
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp + 0x4c]
mov eax, dword [ebp - 0x1c]
mov dword [ebp + 0x10], eax
mov bl, byte [edi + esi]
movzx eax, byte [edi]
cmp al, bl
je 0x42017d
mov ax, word [edx + eax*2]
add ax, word [edx + ebx*2]
mov bl, byte [ecx + eax]
mov eax, dword [ebp + 0x44]
inc edi
inc dword [ebp + 0x44]
mov byte [eax], bl
dec dword [ebp + 0x10]
jne 0x420168
add edi, dword [ebp - 4]
add esi, dword [ebp + 0xc]
mov eax, dword [ebp + 0x24]
add dword [ebp + 0x44], eax
dec dword [ebp - 0xc]
jne 0x420162
mov eax, dword [ebp - 0x64]
mov edx, dword [eax + 8]
lea ecx, [eax + 8]
call dword [edx]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov eax, dword [ebp + 0x48]
add esi, eax
lea edx, [eax + edi]
mov dword [ebp + 0x44], esi
mov dword [ebp + 0x4c], edx
mov edx, dword [ebp - 0x20]
movzx cx, byte [ebp - 0x12]
lea edi, [eax + edx]
mov edx, dword [ebp + 0x40]
add eax, edx
mov edx, dword [ebp - 8]
add edx, eax
mov dword [ebp - 8], edx
mov edx, dword [ebp - 4]
add edx, eax
mov dword [ebp - 4], edx
mov edx, dword [ebp + 0x24]
add edx, eax
mov al, byte [ebx + 9]
test al, al
mov dword [ebp + 0x24], edx
je 0x42049f
test cx, cx
jne 0x42024a
mov eax, dword [ebp + 0x38]
mov ecx, dword [ebp + 0x34]
mov edx, dword [ebp + 0x30]
push eax
mov eax, dword [ebp + 0x2c]
push ecx
mov ecx, dword [ebp + 0x28]
push edx
push eax
mov eax, dword [ebp + 0x20]
push ecx
mov ecx, dword [ebp + 0x3c]
push 0
push 0
push 0
push 0
push 0
lea edx, [ebp - 0x50]
push 0
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
mov ecx, ebx
mov byte [ebp - 0x50], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
cmp cx, 0x3f
jne 0x42028a
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
push 0xff
push 0
and eax, 0xff
push 0
push eax
mov eax, dword [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 8]
push edx
push eax
mov eax, dword [ebp + 0x20]
lea edx, [ebx + 0x18]
push ecx
push edx
push eax
mov ecx, ebx
call fcn.00423e00
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov eax, 0x3f
xor edx, edx
sub eax, ecx
mov dword [ebp + 0x10], edx
and eax, 0xffff
mov dword [ebp + 8], 0x20
mov dword [ebp + 0x20], eax
lea eax, [ebp - 0x128]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
shr edx, 6
mov dword [eax], edx
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x20]
add edx, eax
mov eax, dword [ebp + 0xc]
add eax, 4
mov dword [ebp + 0x10], edx
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 8]
dec eax
mov dword [ebp + 8], eax
jne 0x4202ae
mov eax, ecx
xor ecx, ecx
mov cx, word [ebx + 0x18]
and eax, 0xffff
imul ecx, eax
shr ecx, 0xb
mov dword [ebp + 0xc], ecx
xor ecx, ecx
mov cx, word [ebx + 0x1a]
xor edx, edx
mov dx, word [ebx + 0x1c]
imul ecx, eax
imul edx, eax
mov eax, dword [ebp - 0xc]
shr ecx, 0xb
shr edx, 0xb
mov dword [ebp + 0x3c], ecx
mov dword [ebp + 0x10], edx
mov dword [ebp + 0x20], eax
mov eax, dword [ebp + 0x48]
test eax, eax
je 0x420362
mov ax, word [edi - 2]
and eax, 0xffff
mov edx, eax
shr edx, 5
and edx, 0x1f
mov dx, word [ebp + edx*4 - 0x128]
add dx, cx
shl edx, 5
mov ebx, edx
mov edx, eax
shr edx, 0xa
and eax, 0x1f
mov dx, word [ebp + edx*4 - 0x128]
add dx, word [ebp + 0xc]
mov ax, word [ebp + eax*4 - 0x128]
shl edx, 0xa
or ebx, edx
mov edx, dword [ebp + 0x10]
add ax, dx
or ebx, eax
mov word [esi - 2], bx
mov eax, dword [ebp - 0x18]
test eax, eax
jle 0x42042c
and ecx, 0xffff
mov dword [ebp + 8], eax
mov dword [ebp + 0x18], ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xffff
and edx, 0xffff
mov dword [ebp + 0x14], ecx
mov dword [ebp + 0x2c], edx
mov eax, dword [edi]
add edi, 4
mov ebx, eax
add esi, 4
shr ebx, 0x10
and ebx, 0x1f
mov ebx, dword [ebp + ebx*4 - 0x128]
add ebx, edx
mov edx, eax
shr edx, 0xa
and edx, 0x1f
shl ebx, 0x10
mov edx, dword [ebp + edx*4 - 0x128]
add edx, ecx
mov ecx, eax
shr ecx, 0x15
shl edx, 0xa
and ecx, 0x1f
or ebx, edx
mov edx, dword [ebp + ecx*4 - 0x128]
mov ecx, dword [ebp + 0x18]
add edx, ecx
shl edx, 0x15
or ebx, edx
mov edx, eax
shr edx, 5
and edx, 0x1f
mov edx, dword [ebp + edx*4 - 0x128]
add edx, ecx
mov ecx, eax
shl edx, 5
shr ecx, 0x1a
or ebx, edx
and eax, 0x1f
mov edx, dword [ebp + ecx*4 - 0x128]
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp + eax*4 - 0x128]
add edx, ecx
shl edx, 0x1a
or ebx, edx
mov edx, dword [ebp + 0x2c]
add eax, edx
or ebx, eax
mov eax, dword [ebp + 8]
mov dword [esi - 4], ebx
dec eax
mov dword [ebp + 8], eax
jne 0x42038e
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x3c]
mov eax, dword [ebp + 0x40]
test eax, eax
je 0x42047f
mov ax, word [edi]
and eax, 0xffff
mov edx, eax
shr edx, 5
and edx, 0x1f
mov dx, word [ebp + edx*4 - 0x128]
add dx, cx
shl edx, 5
mov ebx, edx
mov edx, eax
shr edx, 0xa
and eax, 0x1f
mov dx, word [ebp + edx*4 - 0x128]
add dx, word [ebp + 0xc]
mov ax, word [ebp + eax*4 - 0x128]
shl edx, 0xa
or ebx, edx
mov edx, dword [ebp + 0x10]
add ax, dx
or ebx, eax
mov word [esi], bx
mov eax, dword [ebp - 4]
mov ebx, dword [ebp + 0x24]
add edi, eax
mov eax, dword [ebp + 0x20]
add esi, ebx
dec eax
mov dword [ebp + 0x20], eax
jne 0x42030d
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
test cx, cx
jne 0x4204f8
mov ecx, dword [ebp + 0x38]
mov edx, dword [ebp + 0x34]
mov eax, dword [ebp + 0x30]
push ecx
mov ecx, dword [ebp + 0x2c]
push edx
mov edx, dword [ebp + 0x28]
push eax
push ecx
mov ecx, dword [ebp + 0x20]
push edx
mov edx, dword [ebp + 0x3c]
push 0
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x58]
push 0
push eax
mov eax, dword [ebp + 0x18]
push ecx
mov ecx, dword [ebp + 0x14]
push edx
mov edx, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 8]
push edx
push eax
push ecx
mov ecx, ebx
mov byte [ebp - 0x58], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
cmp cx, 0x3f
jne 0x420548
push 0
push 0
push 0
mov eax, dword [ebp + 0x20]
push 0
mov ecx, dword [ebp + 0x1c]
push 0
push 0
push 0
push 0
push 0
push 0
lea edx, [ebp - 0x4c]
push 0
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
mov ecx, ebx
mov byte [ebp - 0x4c], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
xor eax, eax
and ecx, 0xffff
lea edx, [ebp - 0x5a8]
mov dword [ebp + 0xc], 0x20
mov ebx, eax
add eax, ecx
sar ebx, 6
mov dword [edx], ebx
mov ebx, dword [ebp + 0xc]
add edx, 4
dec ebx
mov dword [ebp + 0xc], ebx
jne 0x42055d
mov eax, ecx
lea edx, [ebp - 0x228]
neg eax
shl eax, 5
mov dword [ebp + 0xc], 0x20
mov ebx, eax
add eax, ecx
sar ebx, 6
mov dword [edx], ebx
mov ebx, dword [ebp + 0xc]
add edx, 4
dec ebx
mov dword [ebp + 0xc], ebx
jne 0x420586
mov ecx, dword [ebp - 0xc]
mov dword [ebp + 0x10], ecx
mov eax, dword [ebp + 0x48]
test eax, eax
je 0x420624
mov edx, dword [ebp + 0x4c]
mov cx, word [edi - 2]
mov bx, cx
mov ax, word [edx - 2]
mov edx, ecx
and ecx, 0x1f
mov dword [ebp + 0xc], ecx
mov ecx, eax
shr edx, 5
shr ecx, 5
and edx, 0x1f
and cl, 0x1f
sub cl, dl
and ecx, 0xff
shr bx, 0xa
mov cx, word [ebp + ecx*4 - 0x5a8]
add cx, dx
shl ecx, 5
mov edx, ecx
mov cx, ax
shr cx, 0xa
sub cl, bl
and al, 0x1f
and ecx, 0xff
mov cx, word [ebp + ecx*4 - 0x5a8]
add cx, bx
shl ecx, 0xa
or edx, ecx
mov ecx, dword [ebp + 0xc]
sub al, cl
and eax, 0xff
mov ax, word [ebp + eax*4 - 0x5a8]
add ax, cx
or edx, eax
mov word [esi - 2], dx
mov eax, dword [ebp - 0x18]
test eax, eax
jle 0x420749
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x4c]
add edi, 4
mov eax, dword [ecx]
add ecx, 4
mov dword [ebp + 0x4c], ecx
mov ecx, dword [edi - 4]
mov esi, ecx
mov edx, ecx
shr esi, 0x10
and esi, 0x1f
mov ebx, eax
mov dword [ebp + 8], esi
mov esi, ecx
shr esi, 0xa
shr edx, 0x1a
and esi, 0x1f
mov dword [ebp + 0x14], edx
mov dword [ebp + 0x20], esi
mov edx, ecx
mov esi, ecx
and ecx, 0x1f
shr ebx, 0x10
mov dword [ebp + 0x2c], ecx
mov ecx, dword [ebp + 8]
and bl, 0x1f
shr esi, 5
sub bl, cl
and esi, 0x1f
and ebx, 0xff
mov dword [ebp + 0x18], esi
shr edx, 0x15
mov esi, dword [ebp + ebx*4 - 0x5a8]
and edx, 0x1f
add esi, ecx
mov ecx, eax
shr ecx, 0x15
and cl, 0x1f
sub cl, dl
and ecx, 0xff
shl esi, 0x10
mov ecx, dword [ebp + ecx*4 - 0x5a8]
add ecx, edx
mov edx, eax
shl ecx, 0x15
shr edx, 0xa
or esi, ecx
mov ecx, dword [ebp + 0x20]
and dl, 0x1f
sub dl, cl
and edx, 0xff
mov edx, dword [ebp + edx*4 - 0x5a8]
add edx, ecx
mov ecx, dword [ebp + 0x18]
shl edx, 0xa
or esi, edx
mov edx, eax
shr edx, 5
and dl, 0x1f
sub dl, cl
and edx, 0xff
mov edx, dword [ebp + edx*4 - 0x5a8]
add edx, ecx
mov ecx, dword [ebp + 0x14]
shl edx, 5
or esi, edx
mov edx, eax
shr edx, 0x1a
sub dl, cl
and al, 0x1f
and edx, 0xff
mov edx, dword [ebp + edx*4 - 0x5a8]
add edx, ecx
mov ecx, dword [ebp + 0x2c]
sub al, cl
and eax, 0xff
shl edx, 0x1a
mov eax, dword [ebp + eax*4 - 0x5a8]
or esi, edx
add eax, ecx
or esi, eax
mov eax, dword [ebp + 0x44]
mov dword [eax], esi
add eax, 4
mov dword [ebp + 0x44], eax
mov eax, dword [ebp + 0xc]
dec eax
mov dword [ebp + 0xc], eax
jne 0x420632
mov esi, dword [ebp + 0x44]
mov eax, dword [ebp + 0x40]
test eax, eax
je 0x4207c9
mov ecx, dword [ebp + 0x4c]
mov ax, word [ecx]
mov cx, word [edi]
mov bx, cx
mov edx, ecx
and ecx, 0x1f
mov dword [ebp + 0xc], ecx
mov ecx, eax
shr edx, 5
shr ecx, 5
and edx, 0x1f
and cl, 0x1f
sub cl, dl
and ecx, 0xff
shr bx, 0xa
mov cx, word [ebp + ecx*4 - 0x5a8]
add cx, dx
shl ecx, 5
mov edx, ecx
mov cx, ax
shr cx, 0xa
sub cl, bl
and al, 0x1f
and ecx, 0xff
mov cx, word [ebp + ecx*4 - 0x5a8]
add cx, bx
shl ecx, 0xa
or edx, ecx
mov ecx, dword [ebp + 0xc]
sub al, cl
and eax, 0xff
mov ax, word [ebp + eax*4 - 0x5a8]
add ax, cx
or edx, eax
mov word [esi], dx
mov ecx, dword [ebp - 8]
mov ebx, dword [ebp + 0x4c]
mov edx, dword [ebp - 4]
mov eax, dword [ebp + 0x10]
add ebx, ecx
mov ecx, dword [ebp + 0x24]
add edi, edx
add esi, ecx
dec eax
mov dword [ebp + 0x4c], ebx
mov dword [ebp + 0x44], esi
mov dword [ebp + 0x10], eax
jne 0x4205a1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov eax, dword [ebp + 0x48]
movzx cx, byte [ebp - 0x12]
lea edx, [eax + edi]
mov dword [ebp + 0x4c], edx
mov edx, dword [ebp - 0x20]
lea edi, [eax + edx]
mov edx, dword [ebp + 0x44]
lea esi, [eax + edx]
mov edx, dword [ebp + 0x40]
add eax, edx
mov edx, dword [ebp - 8]
add edx, eax
mov dword [ebp + 0x44], esi
mov dword [ebp - 8], edx
mov edx, dword [ebp - 4]
add edx, eax
mov dword [ebp - 4], edx
mov edx, dword [ebp + 0x24]
add edx, eax
mov al, byte [ebx + 9]
test al, al
mov dword [ebp + 0x24], edx
je 0x420ac2
test cx, cx
jne 0x420895
mov eax, dword [ebp + 0x38]
mov ecx, dword [ebp + 0x34]
mov edx, dword [ebp + 0x30]
push eax
mov eax, dword [ebp + 0x2c]
push ecx
mov ecx, dword [ebp + 0x28]
push edx
push eax
mov eax, dword [ebp + 0x20]
push ecx
mov ecx, dword [ebp + 0x3c]
push 0
push 0
push 0
push 0
push 0
lea edx, [ebp - 0x3c]
push 0
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
mov ecx, ebx
mov byte [ebp - 0x3c], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
cmp cx, 0x3f
je 0x420250
mov eax, 0x3f
xor edx, edx
sub eax, ecx
mov dword [ebp + 0x10], edx
and eax, 0xffff
mov dword [ebp + 8], 0x40
mov dword [ebp + 0x20], eax
lea eax, [ebp - 0x1a8]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
shr edx, 6
mov dword [eax], edx
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x20]
add edx, eax
mov eax, dword [ebp + 0xc]
add eax, 4
mov dword [ebp + 0x10], edx
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 8]
dec eax
mov dword [ebp + 8], eax
jne 0x4208c3
mov eax, ecx
xor edx, edx
mov dx, word [ebx + 0x18]
xor ecx, ecx
mov cx, word [ebx + 0x1a]
and eax, 0xffff
mov dword [ebp + 0xc], eax
imul edx, eax
imul ecx, eax
xor eax, eax
mov ax, word [ebx + 0x1c]
mov ebx, eax
mov eax, dword [ebp - 0xc]
imul ebx, dword [ebp + 0xc]
shr edx, 0xb
shr ecx, 0xb
shr ebx, 0xb
mov dword [ebp + 0x3c], edx
mov dword [ebp + 0x10], ecx
mov dword [ebp + 0xc], ebx
mov dword [ebp + 0x20], eax
mov eax, dword [ebp + 0x48]
test eax, eax
je 0x42097f
mov ax, word [edi - 2]
and eax, 0xffff
mov ebx, eax
shr ebx, 5
and ebx, 0x3f
mov bx, word [ebp + ebx*4 - 0x1a8]
add bx, cx
shl ebx, 5
mov ecx, ebx
mov ebx, eax
shr ebx, 0xb
and eax, 0x1f
mov bx, word [ebp + ebx*4 - 0x1a8]
mov ax, word [ebp + eax*4 - 0x1a8]
add bx, dx
shl ebx, 0xb
or ecx, ebx
mov ebx, dword [ebp + 0xc]
add ax, bx
or ecx, eax
mov word [esi - 2], cx
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x18]
test eax, eax
jle 0x420a4a
and ecx, 0xffff
and edx, 0xffff
and ebx, 0xffff
mov dword [ebp + 0x18], edx
mov dword [ebp + 0x14], ebx
mov dword [ebp + 8], eax
mov eax, dword [edi]
add edi, 4
mov esi, eax
shr esi, 0xb
and esi, 0x1f
mov esi, dword [ebp + esi*4 - 0x1a8]
add esi, edx
mov edx, eax
shr edx, 0x10
and edx, 0x1f
shl esi, 0xb
mov edx, dword [ebp + edx*4 - 0x1a8]
add edx, ebx
shl edx, 0x10
or esi, edx
mov edx, eax
shr edx, 0x15
and edx, 0x3f
mov edx, dword [ebp + edx*4 - 0x1a8]
add edx, ecx
shl edx, 0x15
or esi, edx
mov edx, eax
shr edx, 5
and edx, 0x3f
mov edx, dword [ebp + edx*4 - 0x1a8]
add edx, ecx
shl edx, 5
or esi, edx
mov edx, eax
shr edx, 0x1b
and eax, 0x1f
mov ebx, dword [ebp + edx*4 - 0x1a8]
mov edx, dword [ebp + 0x18]
mov eax, dword [ebp + eax*4 - 0x1a8]
add ebx, edx
shl ebx, 0x1b
or esi, ebx
mov ebx, dword [ebp + 0x14]
add eax, ebx
or esi, eax
mov eax, esi
mov esi, dword [ebp + 0x44]
mov dword [esi], eax
mov eax, dword [ebp + 8]
add esi, 4
dec eax
mov dword [ebp + 0x44], esi
mov dword [ebp + 8], eax
jne 0x4209a5
mov edx, dword [ebp + 0x3c]
mov ecx, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x40]
test eax, eax
je 0x420a9f
mov ax, word [edi]
and eax, 0xffff
mov ebx, eax
shr ebx, 5
and ebx, 0x3f
mov bx, word [ebp + ebx*4 - 0x1a8]
add bx, cx
shl ebx, 5
mov ecx, ebx
mov ebx, eax
shr ebx, 0xb
and eax, 0x1f
mov bx, word [ebp + ebx*4 - 0x1a8]
mov ax, word [ebp + eax*4 - 0x1a8]
add bx, dx
shl ebx, 0xb
or ecx, ebx
mov ebx, dword [ebp + 0xc]
add ax, bx
or ecx, eax
mov word [esi], cx
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 4]
add edi, eax
mov eax, dword [ebp + 0x24]
add esi, eax
mov eax, dword [ebp + 0x20]
dec eax
mov dword [ebp + 0x44], esi
mov dword [ebp + 0x20], eax
jne 0x420928
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
test cx, cx
jne 0x420b1b
mov ecx, dword [ebp + 0x38]
mov edx, dword [ebp + 0x34]
mov eax, dword [ebp + 0x30]
push ecx
mov ecx, dword [ebp + 0x2c]
push edx
mov edx, dword [ebp + 0x28]
push eax
push ecx
mov ecx, dword [ebp + 0x20]
push edx
mov edx, dword [ebp + 0x3c]
push 0
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x5c]
push 0
push eax
mov eax, dword [ebp + 0x18]
push ecx
mov ecx, dword [ebp + 0x14]
push edx
mov edx, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 8]
push edx
push eax
push ecx
mov ecx, ebx
mov byte [ebp - 0x5c], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
cmp cx, 0x3f
jne 0x420b6b
push 0
push 0
push 0
mov eax, dword [ebp + 0x20]
push 0
mov ecx, dword [ebp + 0x1c]
push 0
push 0
push 0
push 0
push 0
push 0
lea edx, [ebp - 0x44]
push 0
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
mov ecx, ebx
mov byte [ebp - 0x44], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
xor eax, eax
and ecx, 0xffff
lea edx, [ebp - 0x5a8]
mov esi, 0x40
mov ebx, eax
add eax, ecx
shr ebx, 6
mov dword [edx], ebx
add edx, 4
dec esi
jne 0x420b7e
mov eax, ecx
lea edx, [ebp - 0x2a8]
neg eax
shl eax, 6
mov esi, 0x40
mov ebx, eax
add eax, ecx
shr ebx, 6
mov dword [edx], ebx
add edx, 4
dec esi
jne 0x420b9f
mov ecx, dword [ebp - 0xc]
mov dword [ebp + 0x10], ecx
mov eax, dword [ebp + 0x48]
test eax, eax
je 0x420c3a
mov edx, dword [ebp + 0x4c]
mov cx, word [edi - 2]
mov bx, cx
mov ax, word [edx - 2]
mov edx, ecx
and ecx, 0x1f
mov dword [ebp + 0xc], ecx
mov ecx, eax
shr edx, 5
shr ecx, 5
and edx, 0x3f
and cl, 0x3f
sub cl, dl
and ecx, 0xff
shr bx, 0xb
mov cx, word [ebp + ecx*4 - 0x5a8]
add cx, dx
shl ecx, 5
mov edx, ecx
mov cx, ax
shr cx, 0xb
sub cl, bl
and al, 0x1f
and ecx, 0xff
mov cx, word [ebp + ecx*4 - 0x5a8]
add cx, bx
shl ecx, 0xb
or edx, ecx
mov ecx, dword [ebp + 0xc]
sub al, cl
and eax, 0xff
mov ax, word [ebp + eax*4 - 0x5a8]
add ax, cx
mov ecx, dword [ebp + 0x44]
or edx, eax
mov word [ecx - 2], dx
mov eax, dword [ebp - 0x18]
test eax, eax
jbe 0x420d5e
mov edx, eax
mov dword [ebp + 0xc], edx
mov ecx, dword [ebp + 0x4c]
add edi, 4
mov eax, dword [ecx]
add ecx, 4
mov dword [ebp + 0x4c], ecx
mov ecx, dword [edi - 4]
mov esi, ecx
mov edx, ecx
shr esi, 0x10
and esi, 0x1f
mov ebx, eax
mov dword [ebp + 8], esi
mov esi, ecx
shr esi, 0xb
shr edx, 0x1b
and esi, 0x1f
mov dword [ebp + 0x14], edx
mov dword [ebp + 0x20], esi
mov edx, ecx
mov esi, ecx
and ecx, 0x1f
shr ebx, 0x10
mov dword [ebp + 0x2c], ecx
mov ecx, dword [ebp + 8]
and bl, 0x1f
shr esi, 5
sub bl, cl
and esi, 0x3f
and ebx, 0xff
mov dword [ebp + 0x18], esi
shr edx, 0x15
mov esi, dword [ebp + ebx*4 - 0x5a8]
and edx, 0x3f
add esi, ecx
mov ecx, eax
shr ecx, 0x15
and cl, 0x3f
sub cl, dl
and ecx, 0xff
shl esi, 0x10
mov ecx, dword [ebp + ecx*4 - 0x5a8]
add ecx, edx
mov edx, eax
shl ecx, 0x15
shr edx, 0xb
or esi, ecx
mov ecx, dword [ebp + 0x20]
and dl, 0x1f
sub dl, cl
and edx, 0xff
mov edx, dword [ebp + edx*4 - 0x5a8]
add edx, ecx
mov ecx, dword [ebp + 0x18]
shl edx, 0xb
or esi, edx
mov edx, eax
shr edx, 5
and dl, 0x3f
sub dl, cl
and edx, 0xff
mov edx, dword [ebp + edx*4 - 0x5a8]
add edx, ecx
mov ecx, dword [ebp + 0x14]
shl edx, 5
or esi, edx
mov edx, eax
shr edx, 0x1b
sub dl, cl
and al, 0x1f
and edx, 0xff
mov edx, dword [ebp + edx*4 - 0x5a8]
add edx, ecx
mov ecx, dword [ebp + 0x2c]
sub al, cl
and eax, 0xff
shl edx, 0x1b
mov eax, dword [ebp + eax*4 - 0x5a8]
or esi, edx
add eax, ecx
or esi, eax
mov eax, dword [ebp + 0x44]
mov dword [eax], esi
add eax, 4
mov dword [ebp + 0x44], eax
mov eax, dword [ebp + 0xc]
dec eax
mov dword [ebp + 0xc], eax
jne 0x420c4a
mov eax, dword [ebp + 0x40]
test eax, eax
je 0x420de1
mov ecx, dword [ebp + 0x4c]
mov ax, word [ecx]
mov cx, word [edi]
mov bx, cx
mov edx, ecx
and ecx, 0x1f
mov dword [ebp + 0xc], ecx
mov ecx, eax
shr edx, 5
shr ecx, 5
and edx, 0x3f
and cl, 0x3f
sub cl, dl
and ecx, 0xff
shr bx, 0xb
mov cx, word [ebp + ecx*4 - 0x5a8]
add cx, dx
shl ecx, 5
mov edx, ecx
mov cx, ax
shr cx, 0xb
sub cl, bl
and al, 0x1f
and ecx, 0xff
mov cx, word [ebp + ecx*4 - 0x5a8]
add cx, bx
shl ecx, 0xb
or edx, ecx
mov ecx, dword [ebp + 0xc]
sub al, cl
and eax, 0xff
mov ax, word [ebp + eax*4 - 0x5a8]
add ax, cx
mov ecx, dword [ebp + 0x44]
or edx, eax
mov word [ecx], dx
mov edx, dword [ebp - 8]
mov esi, dword [ebp + 0x4c]
mov eax, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x44]
add esi, edx
mov edx, dword [ebp - 4]
add ecx, eax
mov eax, dword [ebp + 0x10]
add edi, edx
dec eax
mov dword [ebp + 0x4c], esi
mov dword [ebp + 0x44], ecx
mov dword [ebp + 0x10], eax
jne 0x420bb4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov edx, dword [ebp - 8]
mov esi, dword [ebp - 0x20]
add edx, 3
mov eax, dword [ebp + 0x44]
mov dword [ebp - 8], edx
mov edx, dword [ebp - 4]
add edx, 3
mov dword [ebp - 4], edx
mov edx, dword [ebp + 0x24]
movzx cx, byte [ebp - 0x12]
add edx, 3
mov dword [ebp + 0x24], edx
mov dl, byte [ebx + 9]
test dl, dl
je 0x42105e
test cx, cx
jne 0x420e9c
mov ecx, dword [ebp + 0x38]
mov edx, dword [ebp + 0x34]
mov eax, dword [ebp + 0x30]
push ecx
mov ecx, dword [ebp + 0x2c]
push edx
mov edx, dword [ebp + 0x28]
push eax
push ecx
mov ecx, dword [ebp + 0x20]
push edx
mov edx, dword [ebp + 0x3c]
push 0
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x54]
push 0
push eax
mov eax, dword [ebp + 0x18]
push ecx
mov ecx, dword [ebp + 0x14]
push edx
mov edx, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 8]
push edx
push eax
push ecx
mov ecx, ebx
mov byte [ebp - 0x54], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
cmp cx, 0x3f
jne 0x420edc
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0xc]
push 0xff
push 0
and eax, 0xff
push 0
push eax
mov eax, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 8]
push eax
push ecx
mov ecx, dword [ebp + 0x20]
lea eax, [ebx + 0x18]
push edx
push eax
push ecx
mov ecx, ebx
call fcn.00423e00
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov edx, 0x3f
xor edi, edi
sub edx, ecx
mov dword [ebp + 0x10], edi
and edx, 0xffff
mov dword [ebp + 8], 0x100
mov dword [ebp + 0x20], edx
lea edx, [ebp - 0x5a8]
mov dword [ebp + 0xc], edx
mov edx, dword [ebp + 0xc]
shr edi, 6
mov dword [edx], edi
mov edi, dword [ebp + 0x10]
mov edx, dword [ebp + 0x20]
add edi, edx
mov edx, dword [ebp + 0xc]
add edx, 4
mov dword [ebp + 0x10], edi
mov dword [ebp + 0xc], edx
mov edx, dword [ebp + 8]
dec edx
mov dword [ebp + 8], edx
jne 0x420f01
mov edx, ecx
xor ecx, ecx
mov cx, word [ebx + 0x18]
and edx, 0xffff
mov dword [ebp + 0xc], edx
imul ecx, edx
xor edi, edi
xor edx, edx
mov di, word [ebx + 0x1c]
mov dx, word [ebx + 0x1a]
imul edx, dword [ebp + 0xc]
mov ebx, edi
mov edi, dword [ebp - 0x1c]
imul ebx, dword [ebp + 0xc]
shr ecx, 8
shr edx, 8
shr ebx, 8
dec edi
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0xc], edi
mov edi, dword [ebp - 0xc]
mov dword [ebp + 0x34], edx
mov dword [ebp + 8], ebx
mov dword [ebp + 0x20], edi
jmp 0x420f74
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
test edi, edi
jle 0x42100a
mov edi, edx
mov edx, ecx
mov ecx, dword [ebp + 0xc]
and edi, 0xffff
and edx, 0xffff
and ebx, 0xffff
mov dword [ebp + 0x14], edi
mov dword [ebp + 0x18], edx
mov dword [ebp + 0x3c], ebx
mov dword [ebp + 0x10], ecx
jmp 0x420fac
mov edx, dword [ebp + 0x18]
mov edi, dword [ebp + 0x14]
mov ecx, dword [esi]
xor ebx, ebx
mov dword [ebp + 0x2c], ecx
mov bl, byte [ebp + 0x2e]
add esi, 3
add eax, 3
mov ebx, dword [ebp + ebx*4 - 0x5a8]
add ebx, edx
xor edx, edx
mov dl, ch
shl ebx, 0x10
mov edx, dword [ebp + edx*4 - 0x5a8]
add edx, edi
mov edi, dword [ebp + 0x3c]
shl edx, 8
or ebx, edx
mov edx, ecx
and edx, 0xff
and ecx, 0xff000000
mov edx, dword [ebp + edx*4 - 0x5a8]
add edx, edi
or ebx, edx
or ebx, ecx
mov ecx, dword [ebp + 0x10]
mov dword [eax - 3], ebx
dec ecx
mov dword [ebp + 0x10], ecx
jne 0x420fa6
mov ecx, dword [ebp + 0x38]
mov ebx, dword [ebp + 8]
xor edx, edx
mov edi, dword [ebp - 4]
mov dl, byte [esi]
mov dl, byte [ebp + edx*4 - 0x5a8]
add dl, bl
mov byte [eax], dl
xor edx, edx
mov dl, byte [esi + 1]
mov bl, byte [ebp + edx*4 - 0x5a8]
mov edx, dword [ebp + 0x34]
add bl, dl
mov byte [eax + 1], bl
xor ebx, ebx
mov bl, byte [esi + 2]
add esi, edi
mov edi, dword [ebp + 0x20]
mov bl, byte [ebp + ebx*4 - 0x5a8]
add bl, cl
mov byte [eax + 2], bl
mov ebx, dword [ebp + 0x24]
add eax, ebx
dec edi
mov dword [ebp + 0x20], edi
jne 0x420f71
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
test cx, cx
jne 0x4210b7
mov eax, dword [ebp + 0x38]
mov ecx, dword [ebp + 0x34]
mov edx, dword [ebp + 0x30]
push eax
mov eax, dword [ebp + 0x2c]
push ecx
mov ecx, dword [ebp + 0x28]
push edx
push eax
mov eax, dword [ebp + 0x20]
push ecx
mov ecx, dword [ebp + 0x3c]
push 0
push 0
push 0
push 0
push 0
lea edx, [ebp - 0x28]
push 0
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
mov ecx, ebx
mov byte [ebp - 0x28], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
cmp cx, 0x3f
jne 0x421107
push 0
push 0
push 0
mov edx, dword [ebp + 0x20]
push 0
mov eax, dword [ebp + 0x1c]
push 0
push 0
push 0
push 0
push 0
push 0
lea ecx, [ebp - 0x38]
push 0
push ecx
mov ecx, dword [ebp + 0x18]
push edx
mov edx, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, dword [ebp + 0xc]
push edx
mov edx, dword [ebp + 8]
push eax
push ecx
push edx
mov ecx, ebx
mov byte [ebp - 0x38], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov dword [ebp + 0xc], 0
and ecx, 0xffff
lea edx, [ebp - 0x9a8]
mov dword [ebp + 0x10], 0x100
mov ebx, dword [ebp + 0xc]
add edx, 4
shr ebx, 6
mov dword [edx - 4], ebx
mov ebx, dword [ebp + 0xc]
add ebx, ecx
mov dword [ebp + 0xc], ebx
mov ebx, dword [ebp + 0x10]
dec ebx
mov dword [ebp + 0x10], ebx
jne 0x421121
mov edx, ecx
lea ebx, [ebp - 0x5a8]
neg edx
shl edx, 8
mov dword [ebp + 0xc], edx
mov dword [ebp + 0x10], 0x100
jmp 0x42115a
mov ebx, dword [ebp + 8]
shr edx, 6
mov dword [ebx], edx
mov edx, dword [ebp + 0xc]
add ebx, 4
add edx, ecx
mov dword [ebp + 8], ebx
mov ebx, dword [ebp + 0x10]
dec ebx
mov dword [ebp + 0xc], edx
mov dword [ebp + 0x10], ebx
jne 0x421157
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0xc]
dec ecx
mov dword [ebp + 8], edx
mov dword [ebp + 0xc], ecx
jmp 0x421188
mov ecx, dword [ebp + 0xc]
test ecx, ecx
jle 0x42122c
mov dword [ebp + 0x10], ecx
mov edx, dword [esi]
mov ecx, dword [edi]
xor ebx, ebx
mov dword [ebp + 0x20], edx
mov bl, byte [ebp + 0x22]
add edi, 3
mov dword [ebp + 0x4c], edi
mov edi, ebx
xor ebx, ebx
mov dword [ebp + 0x18], ecx
mov bl, dh
and edx, 0xff
mov dword [ebp + 0x20], edx
xor edx, edx
mov dl, ch
and ecx, 0xff
sub edx, ebx
add esi, 3
and edx, 0x1ff
add eax, 3
mov edx, dword [ebp + edx*4 - 0x9a8]
add edx, ebx
shl edx, 8
mov ebx, edx
xor edx, edx
mov dl, byte [ebp + 0x1a]
sub edx, edi
and edx, 0x1ff
mov edx, dword [ebp + edx*4 - 0x9a8]
add edx, edi
mov edi, dword [ebp + 0x4c]
shl edx, 0x10
or ebx, edx
mov edx, dword [ebp + 0x20]
sub ecx, edx
and ecx, 0x1ff
mov ecx, dword [ebp + ecx*4 - 0x9a8]
add ecx, edx
mov edx, dword [eax - 3]
or ebx, ecx
mov ecx, dword [ebp + 0x10]
and edx, 0xff000000
or ebx, edx
dec ecx
mov dword [eax - 3], ebx
mov dword [ebp + 0x10], ecx
jne 0x421193
xor ebx, ebx
xor edx, edx
mov bl, byte [esi + 1]
mov dl, byte [edi + 2]
mov dword [ebp + 0x10], ebx
xor ebx, ebx
mov bl, byte [esi + 2]
mov dword [ebp + 0x20], edx
mov dword [ebp + 0x18], ebx
xor edx, edx
mov dl, byte [esi]
xor ebx, ebx
mov bl, byte [edi]
xor ecx, ecx
mov cl, byte [edi + 1]
sub ebx, edx
and ebx, 0x1ff
mov bl, byte [ebp + ebx*4 - 0x9a8]
add bl, dl
mov edx, dword [ebp + 0x10]
sub ecx, edx
mov byte [eax], bl
and ecx, 0x1ff
mov ebx, dword [ebp - 4]
add esi, ebx
mov cl, byte [ebp + ecx*4 - 0x9a8]
add cl, dl
mov edx, dword [ebp + 0x18]
mov byte [eax + 1], cl
mov ecx, dword [ebp + 0x20]
sub ecx, edx
and ecx, 0x1ff
mov cl, byte [ebp + ecx*4 - 0x9a8]
add cl, dl
mov edx, dword [ebp + 0x24]
mov byte [eax + 2], cl
mov ecx, dword [ebp - 8]
add edi, ecx
mov ecx, dword [ebp + 8]
add eax, edx
dec ecx
mov dword [ebp + 8], ecx
jne 0x421185
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov al, byte [ebx + 9]
mov esi, dword [ebp - 0x20]
movzx dx, byte [ebp - 0x12]
mov dword [ebp + 0x4c], edi
mov edi, dword [ebp + 0x44]
test al, al
mov dword [ebp + 0x44], edi
je 0x421469
test dx, dx
jne 0x42132f
mov edx, dword [ebp + 0x38]
mov eax, dword [ebp + 0x34]
mov ecx, dword [ebp + 0x30]
push edx
mov edx, dword [ebp + 0x2c]
push eax
mov eax, dword [ebp + 0x28]
push ecx
push edx
mov edx, dword [ebp + 0x20]
push eax
mov eax, dword [ebp + 0x3c]
push 0
push 0
push 0
push 0
push 0
lea ecx, [ebp - 0x40]
push 0
push ecx
mov ecx, dword [ebp + 0x18]
push edx
mov edx, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, dword [ebp + 0xc]
push edx
mov edx, dword [ebp + 8]
push eax
push ecx
push edx
mov ecx, ebx
mov byte [ebp - 0x40], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
cmp dx, 0x3f
jne 0x42136f
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
push 0xff
push 0
and eax, 0xff
push 0
push eax
mov eax, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
mov edx, dword [ebp + 0x20]
lea ecx, [ebx + 0x18]
push eax
push ecx
push edx
mov ecx, ebx
call fcn.00423e00
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov eax, 0x3f
mov dword [ebp + 0xc], 0
sub eax, edx
lea ecx, [ebp - 0x5a8]
and eax, 0xffff
mov dword [ebp + 0x10], 0x100
mov edx, dword [ebp + 0xc]
add ecx, 4
shr edx, 6
mov dword [ecx - 4], edx
mov edx, dword [ebp + 0xc]
add edx, eax
mov dword [ebp + 0xc], edx
mov edx, dword [ebp + 0x10]
dec edx
mov dword [ebp + 0x10], edx
jne 0x42138f
movzx ax, byte [ebp - 0x12]
xor ecx, ecx
and eax, 0xffff
mov cx, word [ebx + 0x18]
xor edx, edx
mov dx, word [ebx + 0x1c]
imul ecx, eax
imul edx, eax
shr ecx, 8
and ecx, 0xffff
shr edx, 8
shl ecx, 8
and edx, 0xffff
or ecx, edx
xor edx, edx
mov dx, word [ebx + 0x1a]
imul edx, eax
mov eax, dword [ebp - 0xc]
shr edx, 8
shl ecx, 8
and edx, 0xffff
mov dword [ebp + 0x10], eax
or ecx, edx
mov edx, dword [ebp - 0x1c]
mov dword [ebp + 0xc], edx
mov eax, dword [esi]
xor edx, edx
mov dword [ebp + 8], eax
mov dl, byte [ebp + 0xa]
mov ebx, eax
and eax, 0xff
mov edx, dword [ebp + edx*4 - 0x5a8]
add esi, 4
shr ebx, 0xa
and ebx, 0xff
add edi, 4
shl edx, 6
or edx, dword [ebp + ebx*4 - 0x5a8]
mov ebx, dword [ebp + eax*4 - 0x5a8]
mov eax, dword [ebp + 0xc]
shl edx, 0xa
or edx, ebx
add edx, ecx
dec eax
mov dword [edi - 4], edx
mov dword [ebp + 0xc], eax
jne 0x421402
mov ebx, dword [ebp - 4]
mov edx, dword [ebp + 0x24]
mov eax, dword [ebp + 0x10]
add esi, ebx
add edi, edx
dec eax
mov dword [ebp + 0x10], eax
jne 0x4213fc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
test dx, dx
jne 0x4214c2
mov eax, dword [ebp + 0x38]
mov ecx, dword [ebp + 0x34]
mov edx, dword [ebp + 0x30]
push eax
mov eax, dword [ebp + 0x2c]
push ecx
mov ecx, dword [ebp + 0x28]
push edx
push eax
mov eax, dword [ebp + 0x20]
push ecx
mov ecx, dword [ebp + 0x3c]
push 0
push 0
push 0
push 0
push 0
lea edx, [ebp - 0x48]
push 0
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
mov ecx, ebx
mov byte [ebp - 0x48], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
cmp dx, 0x3f
jne 0x421512
push 0
push 0
push 0
mov edx, dword [ebp + 0x20]
push 0
mov eax, dword [ebp + 0x1c]
push 0
push 0
push 0
push 0
push 0
push 0
lea ecx, [ebp - 0x2c]
push 0
push ecx
mov ecx, dword [ebp + 0x18]
push edx
mov edx, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, dword [ebp + 0xc]
push edx
mov edx, dword [ebp + 8]
push eax
push ecx
push edx
mov ecx, ebx
mov byte [ebp - 0x2c], 0x20
call fcn.0041f350
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov eax, edx
xor ecx, ecx
and eax, 0xffff
lea edx, [ebp - 0x5a8]
mov edi, 0x100
mov ebx, ecx
add ecx, eax
shr ebx, 6
mov dword [edx], ebx
add edx, 4
dec edi
jne 0x421526
mov ecx, eax
lea edx, [ebp - 0x5a8]
neg ecx
shl ecx, 8
mov edi, 0x100
mov ebx, ecx
add ecx, eax
shr ebx, 6
mov dword [edx], ebx
add edx, 4
dec edi
jne 0x421547
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0xc]
dec eax
mov dword [ebp + 8], ecx
mov dword [ebp + 0xc], eax
test eax, eax
jle 0x421600
mov dword [ebp + 0x10], eax
mov edx, dword [ebp + 0x4c]
mov ecx, dword [esi]
mov edi, ecx
add esi, 4
mov eax, dword [edx]
add edx, 4
mov dword [ebp + 0x4c], edx
mov edx, ecx
mov ebx, eax
and ecx, 0xff
shr edx, 0xa
shr ebx, 0xa
and edx, 0xff
and ebx, 0xff
sub ebx, edx
and ebx, 0x1ff
shr edi, 0x10
mov ebx, dword [ebp + ebx*4 - 0x5a8]
add ebx, edx
mov edx, eax
shr edx, 0x10
sub edx, edi
and eax, 0xff
and edx, 0x1ff
sub eax, ecx
and eax, 0x1ff
mov edx, dword [ebp + edx*4 - 0x5a8]
mov eax, dword [ebp + eax*4 - 0x5a8]
add edx, edi
shl ebx, 0xa
shl edx, 0x10
or ebx, edx
add eax, ecx
or ebx, eax
mov eax, dword [ebp + 0x44]
mov dword [eax], ebx
add eax, 4
mov dword [ebp + 0x44], eax
mov eax, dword [ebp + 0x10]
dec eax
mov dword [ebp + 0x10], eax
jne 0x42156e
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp + 0x4c]
mov ebx, dword [ebp - 4]
mov edi, dword [ebp + 0x44]
add edx, ecx
mov ecx, dword [ebp + 8]
mov dword [ebp + 0x4c], edx
mov edx, dword [ebp + 0x24]
add esi, ebx
add edi, edx
dec ecx
mov dword [ebp + 0x44], edi
mov dword [ebp + 8], ecx
jne 0x421563
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov eax, dword [ebp - 0x13]
mov ebx, dword [ebx + 0x14]
and eax, 0xff
mov esi, 0x3f00
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x12]
and eax, 0xff
mov edi, eax
shl eax, 8
shl edi, 8
sub esi, eax
test ebx, ebx
je 0x421664
mov eax, ebx
mov dword [ebp + 0x10], eax
inc dword [eax + 0xc]
jmp 0x42166c
call fcn.0041ca60
mov dword [ebp + 0x10], eax
mov ecx, dword [eax + 0x1c]
mov dl, byte [ebp + 0xc]
mov eax, dword [eax + 0x24]
mov dword [ebp + 0x14], ecx
mov ecx, dword [ebp - 8]
mov byte [ebp + 0xf], dl
mov edx, dword [ebp - 4]
sub edi, esi
sub ecx, edx
mov dword [ebp + 0x20], edi
mov dword [ebp + 8], ecx
lea ecx, [eax + esi*2]
mov dword [ebp + 0x18], ecx
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x98]
sub esi, edi
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x20]
mov eax, dword [ebp - 0x1c]
mov dword [ebp + 0x2c], eax
mov bl, byte [edi + esi]
cmp bl, byte [ebp + 0xf]
je 0x4216ca
movzx eax, byte [edi]
cmp al, bl
je 0x4216c5
mov ax, word [edx + eax*2]
add ax, word [edx + ebx*2]
mov bl, byte [ecx + eax]
mov eax, dword [ebp + 0x44]
mov byte [eax], bl
inc edi
inc dword [ebp + 0x44]
dec dword [ebp + 0x2c]
jne 0x4216ab
add edi, dword [ebp - 4]
add esi, dword [ebp + 8]
mov eax, dword [ebp + 0x24]
add dword [ebp + 0x44], eax
dec dword [ebp - 0xc]
jne 0x4216a5
mov edx, dword [ebp + 0x10]
mov eax, dword [edx + 8]
lea ecx, [edx + 8]
call dword [eax]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov edx, dword [ebx + 0x10]
test edx, edx
je 0x421704
mov eax, dword [edx + 0x20]
jmp 0x421706
xor eax, eax
test eax, eax
je case.0x41fdd5.13
mov cx, word [edx + 0x5a]
mov si, word [edx + 0x58]
mov word [ebp + 0xe], cx
mov ecx, dword [edx + 0x18]
sub ecx, dword [edx + 0x10]
movsx esi, si
mov edx, ecx
sub edx, dword [ebp - 0x1c]
mov dword [ebp + 0x20], edx
movsx edx, word [ebp + 0xe]
add edx, dword [ebp - 0x80]
imul edx, ecx
mov ecx, dword [ebp - 0x84]
add ecx, edx
add esi, ecx
mov ecx, dword [ebp + 0x4c]
add eax, esi
lea esi, [ecx - 8]
mov dword [ebp + 0x10], eax
cmp esi, 0x18
ja case.0x41fdd5.13
xor edx, edx
mov dl, byte [esi + 0x423068]
jmp dword [edx*4 + 0x423050]
call fcn.0041ca60
test eax, eax
mov dword [ebp + 0x34], eax
je 0x421773
mov ecx, dword [eax + 0x1c]
jmp 0x421775
xor ecx, ecx
mov esi, dword [eax + 0x24]
mov dword [ebp + 0xc], ecx
test ecx, ecx
je 0x421e8b
test esi, esi
je 0x421e8b
mov ecx, dword [ebp + 0x48]
mov eax, dword [ebp + 0x10]
lea edx, [ecx + eax]
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0x10], edx
mov edx, dword [ebp + 0x44]
lea ebx, [ecx + eax]
lea eax, [ecx + edi]
lea edi, [ecx + edx]
mov edx, dword [ebp + 0x40]
add ecx, edx
mov edx, dword [ebp - 4]
add edx, ecx
mov dword [ebp + 0x4c], eax
mov dword [ebp - 4], edx
mov edx, dword [ebp - 8]
add edx, ecx
mov dword [ebp + 0x44], edi
mov dword [ebp - 8], edx
mov edx, dword [ebp + 0x24]
add edx, ecx
mov ecx, dword [ebp + 0x40]
mov dword [ebp + 0x24], edx
mov edx, dword [ebp + 0x48]
add ecx, edx
mov edx, dword [ebp + 0x20]
add edx, ecx
mov ecx, dword [ebp - 0x64]
mov dword [ebp + 0x20], edx
mov dl, byte [ecx + 9]
test dl, dl
je 0x421b0e
mov eax, dword [ecx + 0x20]
test eax, eax
jge 0x42180f
mov eax, ecx
mov ecx, dword [ebp + 0x34]
add eax, 0x18
push eax
call fcn.0041c3c0
mov ecx, dword [ebp - 0x64]
test eax, eax
mov dword [ecx + 0x20], eax
jge 0x42180f
mov edx, ecx
mov dword [edx + 0x20], 0
mov eax, dword [ebp - 0x64]
mov edx, dword [ebp - 0xc]
mov dword [ebp + 0x28], edx
mov edx, dword [ebp + 0x10]
mov cl, byte [eax + 0x20]
mov byte [ebp + 8], cl
mov ecx, dword [ebp + 8]
and ecx, 0xff
mov eax, ecx
mov dword [ebp + 0x18], ecx
shl eax, 8
or eax, ecx
shl eax, 8
or eax, ecx
shl eax, 8
or eax, ecx
lea ecx, [esi + ecx*2]
mov dword [ebp + 0x1c], eax
mov dword [ebp + 0x30], ecx
mov eax, dword [ebp + 0x48]
dec eax
je 0x4218c4
dec eax
je 0x42188c
dec eax
jne 0x4218ff
xor eax, eax
mov ecx, 0x3f
mov al, byte [edx - 3]
xor edx, edx
mov dl, byte [ebx - 3]
sub ecx, eax
shl ecx, 8
add ecx, edx
xor edx, edx
shl eax, 8
mov dx, word [esi + ecx*2]
mov ecx, dword [ebp + 0x18]
add eax, ecx
xor ecx, ecx
mov cx, word [esi + eax*2]
mov eax, dword [ebp + 0xc]
add eax, edx
mov cl, byte [ecx + eax]
mov byte [edi - 3], cl
mov edx, dword [ebp + 0x10]
xor eax, eax
mov ecx, 0x3f
mov al, byte [edx - 2]
xor edx, edx
mov dl, byte [ebx - 2]
sub ecx, eax
shl ecx, 8
add ecx, edx
xor edx, edx
shl eax, 8
mov dx, word [esi + ecx*2]
mov ecx, dword [ebp + 0x18]
add eax, ecx
xor ecx, ecx
mov cx, word [esi + eax*2]
mov eax, dword [ebp + 0xc]
add eax, edx
mov cl, byte [ecx + eax]
mov byte [edi - 2], cl
mov edx, dword [ebp + 0x10]
xor eax, eax
mov ecx, 0x3f
mov al, byte [edx - 1]
xor edx, edx
mov dl, byte [ebx - 1]
sub ecx, eax
shl ecx, 8
add ecx, edx
xor edx, edx
shl eax, 8
mov dx, word [esi + ecx*2]
mov ecx, dword [ebp + 0x18]
add eax, ecx
xor ecx, ecx
mov cx, word [esi + eax*2]
mov eax, dword [ebp + 0xc]
add eax, edx
mov cl, byte [ecx + eax]
mov byte [edi - 1], cl
mov ecx, dword [ebp + 0x30]
mov eax, dword [ebp - 0x18]
test eax, eax
jle 0x421a2c
mov dword [ebp + 0x38], eax
mov edx, dword [ebp + 0x10]
mov eax, dword [edx]
add edx, 4
test eax, eax
mov dword [ebp + 0x2c], eax
mov dword [ebp + 0x10], edx
jne 0x421931
mov edx, dword [ebx]
mov dword [edi], edx
add edi, 4
mov dword [ebp + 0x44], edi
add ebx, 4
jmp 0x421a1f
cmp eax, 0x3f3f3f3f
jne 0x42194b
mov eax, dword [ebp + 0x1c]
mov dword [edi], eax
add edi, 4
mov dword [ebp + 0x44], edi
add ebx, 4
jmp 0x421a1f
mov edx, dword [ebx]
xor eax, 0x3f3f3f3f
mov dword [ebp + 0x14], eax
xor eax, eax
mov ah, byte [ebp + 0x17]
mov dword [ebp + 0x3c], edx
shr edx, 0x18
add eax, edx
xor edx, edx
xor edi, edi
add ebx, 4
mov dx, word [esi + eax*2]
xor eax, eax
mov ah, byte [ebp + 0x2f]
mov dword [ebp + 8], ebx
xor ebx, ebx
mov di, word [ecx + eax*2]
mov eax, dword [ebp + 0xc]
add eax, edx
xor edx, edx
mov dh, byte [edi + eax]
xor eax, eax
mov al, byte [ebp + 0x3e]
xor edi, edi
mov ah, byte [ebp + 0x16]
mov di, word [esi + eax*2]
xor eax, eax
mov ah, byte [ebp + 0x2e]
mov bx, word [ecx + eax*2]
mov eax, dword [ebp + 0xc]
add eax, edi
xor edi, edi
mov dl, byte [ebx + eax]
xor eax, eax
mov al, byte [ebp + 0x3d]
xor ebx, ebx
mov ah, byte [ebp + 0x15]
shl edx, 8
mov di, word [esi + eax*2]
mov eax, dword [ebp + 0x2c]
and eax, 0xff00
mov dword [ebp + 0x4c], edx
xor edx, edx
mov bx, word [ecx + eax*2]
mov eax, dword [ebp + 0xc]
add eax, edi
mov edi, dword [ebp + 0x3c]
and edi, 0xff
mov dl, byte [ebx + eax]
mov eax, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x4c]
and eax, 0xff
shl eax, 8
or ebx, edx
add eax, edi
xor edx, edx
xor edi, edi
mov dx, word [esi + eax*2]
mov eax, dword [ebp + 0x2c]
and eax, 0xff
shl eax, 9
shl ebx, 8
mov di, word [eax + ecx]
mov eax, dword [ebp + 0xc]
add eax, edx
xor edx, edx
mov dl, byte [edi + eax]
mov edi, dword [ebp + 0x44]
or ebx, edx
mov dword [edi], ebx
mov ebx, dword [ebp + 8]
add edi, 4
mov dword [ebp + 0x44], edi
mov eax, dword [ebp + 0x38]
dec eax
mov dword [ebp + 0x38], eax
jne 0x42190d
mov eax, dword [ebp + 0x40]
dec eax
je 0x421aac
dec eax
je 0x421a74
dec eax
jne 0x421ae4
mov ecx, dword [ebp + 0x10]
xor eax, eax
mov edx, 0x3f
mov al, byte [ecx + 2]
xor ecx, ecx
mov cl, byte [ebx + 2]
sub edx, eax
shl edx, 8
add edx, ecx
xor ecx, ecx
shl eax, 8
mov cx, word [esi + edx*2]
mov edx, dword [ebp + 0x18]
add eax, edx
xor edx, edx
mov dx, word [esi + eax*2]
mov eax, dword [ebp + 0xc]
add eax, ecx
mov cl, byte [edx + eax]
mov byte [edi + 2], cl
mov edx, dword [ebp + 0x10]
xor eax, eax
mov ecx, 0x3f
mov al, byte [edx + 1]
xor edx, edx
mov dl, byte [ebx + 1]
sub ecx, eax
shl ecx, 8
add ecx, edx
xor edx, edx
shl eax, 8
mov dx, word [esi + ecx*2]
mov ecx, dword [ebp + 0x18]
add eax, ecx
xor ecx, ecx
mov cx, word [esi + eax*2]
mov eax, dword [ebp + 0xc]
add eax, edx
mov cl, byte [ecx + eax]
mov byte [edi + 1], cl
mov edx, dword [ebp + 0x10]
xor eax, eax
mov ecx, 0x3f
mov al, byte [edx]
xor edx, edx
mov dl, byte [ebx]
sub ecx, eax
shl ecx, 8
add ecx, edx
xor edx, edx
shl eax, 8
mov dx, word [esi + ecx*2]
mov ecx, dword [ebp + 0x18]
add eax, ecx
xor ecx, ecx
mov cx, word [esi + eax*2]
mov eax, dword [ebp + 0xc]
add eax, edx
mov cl, byte [ecx + eax]
mov byte [edi], cl
mov ecx, dword [ebp + 0x30]
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x20]
add edx, eax
mov eax, dword [ebp - 4]
add ebx, eax
mov eax, dword [ebp + 0x24]
add edi, eax
mov eax, dword [ebp + 0x28]
dec eax
mov dword [ebp + 0x10], edx
mov dword [ebp + 0x44], edi
mov dword [ebp + 0x28], eax
jne 0x421847
jmp 0x421e8b
mov edx, dword [ebp - 0xc]
mov dword [ebp + 0x28], edx
mov ecx, dword [ebp + 0x48]
dec ecx
je 0x421bc2
dec ecx
je 0x421b75
dec ecx
jne 0x421c0f
mov ecx, dword [ebp + 0x10]
mov dl, byte [ecx - 3]
mov byte [ebp + 0x18], dl
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
mov edx, 0x3f
mov dword [ebp + 8], ecx
sub edx, ecx
xor ecx, ecx
mov cl, byte [ebx - 3]
shl edx, 8
add edx, ecx
xor ecx, ecx
mov cx, word [esi + edx*2]
xor edx, edx
mov dl, byte [eax - 3]
mov eax, dword [ebp + 8]
shl eax, 8
add edx, eax
xor eax, eax
mov ax, word [esi + edx*2]
mov edx, dword [ebp + 0xc]
add edx, ecx
mov al, byte [eax + edx]
mov byte [edi - 3], al
mov eax, dword [ebp + 0x4c]
mov ecx, dword [ebp + 0x10]
mov dl, byte [ecx - 2]
mov byte [ebp + 0x18], dl
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
mov edx, 0x3f
mov dword [ebp + 8], ecx
sub edx, ecx
xor ecx, ecx
mov cl, byte [ebx - 2]
shl edx, 8
add edx, ecx
xor ecx, ecx
mov cx, word [esi + edx*2]
xor edx, edx
mov dl, byte [eax - 2]
mov eax, dword [ebp + 8]
shl eax, 8
add edx, eax
xor eax, eax
mov ax, word [esi + edx*2]
mov edx, dword [ebp + 0xc]
add edx, ecx
mov al, byte [eax + edx]
mov byte [edi - 2], al
mov eax, dword [ebp + 0x4c]
mov ecx, dword [ebp + 0x10]
mov dl, byte [ecx - 1]
mov byte [ebp + 0x18], dl
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
mov edx, 0x3f
mov dword [ebp + 8], ecx
sub edx, ecx
xor ecx, ecx
mov cl, byte [ebx - 1]
shl edx, 8
add edx, ecx
xor ecx, ecx
mov cx, word [esi + edx*2]
xor edx, edx
mov dl, byte [eax - 1]
mov eax, dword [ebp + 8]
shl eax, 8
add edx, eax
xor eax, eax
mov ax, word [esi + edx*2]
mov edx, dword [ebp + 0xc]
add edx, ecx
mov al, byte [eax + edx]
mov byte [edi - 1], al
mov eax, dword [ebp + 0x4c]
mov ecx, dword [ebp - 0x18]
test ecx, ecx
jle 0x421d64
mov dword [ebp + 0x30], ecx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx]
add ecx, 4
test edx, edx
mov dword [ebp + 0x2c], edx
mov dword [ebp + 0x10], ecx
jne 0x421c44
mov edx, dword [ebx]
add ebx, 4
mov dword [edi], edx
add edi, 4
add eax, 4
mov dword [ebp + 0x4c], eax
jmp 0x421d57
cmp edx, 0x3f3f3f3f
jne 0x421c61
mov ecx, dword [eax]
add eax, 4
mov dword [edi], ecx
add edi, 4
mov dword [ebp + 0x4c], eax
add ebx, 4
jmp 0x421d57
mov ecx, dword [ebx]
add ebx, 4
mov dword [ebp + 8], ebx
mov ebx, dword [eax]
add eax, 4
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0x4c], eax
mov eax, edx
xor edx, edx
xor eax, 0x3f3f3f3f
mov dl, byte [ebp + 0x3a]
mov dword [ebp + 0x14], eax
mov dh, byte [ebp + 0x16]
xor eax, eax
mov dword [ebp + 0x3c], ebx
xor ebx, ebx
mov ax, word [esi + edx*2]
xor edx, edx
mov dl, byte [ebp + 0x3e]
mov dh, byte [ebp + 0x2e]
shr ecx, 0x18
mov bx, word [esi + edx*2]
mov edx, dword [ebp + 0xc]
add edx, eax
xor eax, eax
mov al, byte [ebx + edx]
xor edx, edx
mov dh, byte [ebp + 0x17]
mov ebx, dword [ebp + 0x3c]
add edx, ecx
xor ecx, ecx
shr ebx, 0x18
mov cx, word [esi + edx*2]
xor edx, edx
mov dh, byte [ebp + 0x2f]
add edx, ebx
xor ebx, ebx
mov bx, word [esi + edx*2]
mov edx, dword [ebp + 0xc]
add edx, ecx
xor ecx, ecx
mov cl, byte [ebp + 0x39]
mov ah, byte [ebx + edx]
mov ch, byte [ebp + 0x15]
xor edx, edx
xor ebx, ebx
mov dx, word [esi + ecx*2]
xor ecx, ecx
mov cl, byte [ebp + 0x3d]
mov ch, byte [ebp + 0x2d]
shl eax, 8
mov bx, word [esi + ecx*2]
mov ecx, dword [ebp + 0xc]
add ecx, edx
xor edx, edx
mov dl, byte [ebx + ecx]
mov ecx, dword [ebp + 0x38]
or eax, edx
and ecx, 0xff
shl eax, 8
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp + 0x14]
and eax, 0xff
shl eax, 8
add eax, ecx
xor ecx, ecx
mov cx, word [esi + eax*2]
mov eax, dword [ebp + 0x2c]
mov edx, ecx
mov ecx, dword [ebp + 0x3c]
and eax, 0xff
and ecx, 0xff
shl eax, 8
add eax, ecx
xor ecx, ecx
mov cx, word [esi + eax*2]
mov eax, dword [ebp + 0xc]
add eax, edx
xor edx, edx
mov dl, byte [ecx + eax]
mov eax, dword [ebp + 0x1c]
mov ebx, dword [ebp + 8]
or eax, edx
mov dword [edi], eax
mov eax, dword [ebp + 0x4c]
add edi, 4
mov ecx, dword [ebp + 0x30]
dec ecx
mov dword [ebp + 0x30], ecx
jne 0x421c1d
mov ecx, dword [ebp + 0x40]
dec ecx
je 0x421e12
dec ecx
je 0x421dc5
dec ecx
jne 0x421e61
mov ecx, dword [ebp + 0x10]
mov dl, byte [ecx + 2]
mov byte [ebp + 0x18], dl
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
mov edx, 0x3f
mov dword [ebp + 8], ecx
sub edx, ecx
xor ecx, ecx
mov cl, byte [ebx + 2]
shl edx, 8
add edx, ecx
xor ecx, ecx
mov cx, word [esi + edx*2]
xor edx, edx
mov dl, byte [eax + 2]
mov eax, dword [ebp + 8]
shl eax, 8
add edx, eax
xor eax, eax
mov ax, word [esi + edx*2]
mov edx, dword [ebp + 0xc]
add edx, ecx
mov al, byte [eax + edx]
mov byte [edi + 2], al
mov eax, dword [ebp + 0x4c]
mov ecx, dword [ebp + 0x10]
mov dl, byte [ecx + 1]
mov byte [ebp + 0x18], dl
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
mov edx, 0x3f
mov dword [ebp + 8], ecx
sub edx, ecx
xor ecx, ecx
mov cl, byte [ebx + 1]
shl edx, 8
add edx, ecx
xor ecx, ecx
mov cx, word [esi + edx*2]
xor edx, edx
mov dl, byte [eax + 1]
mov eax, dword [ebp + 8]
shl eax, 8
add edx, eax
xor eax, eax
mov ax, word [esi + edx*2]
mov edx, dword [ebp + 0xc]
add edx, ecx
mov al, byte [eax + edx]
mov byte [edi + 1], al
mov eax, dword [ebp + 0x4c]
mov ecx, dword [ebp + 0x10]
mov dl, byte [ecx]
mov byte [ebp + 0x18], dl
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
mov edx, 0x3f
mov dword [ebp + 8], ecx
sub edx, ecx
xor ecx, ecx
mov cl, byte [ebx]
shl edx, 8
add edx, ecx
xor ecx, ecx
mov cx, word [esi + edx*2]
mov edx, dword [ebp + 8]
shl edx, 8
mov dword [ebp + 8], edx
xor edx, edx
mov dl, byte [eax]
mov eax, dword [ebp + 8]
add eax, edx
xor edx, edx
mov dx, word [esi + eax*2]
mov eax, dword [ebp + 0xc]
add eax, ecx
mov cl, byte [edx + eax]
mov eax, dword [ebp + 0x4c]
mov byte [edi], cl
mov edx, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x10]
add ecx, edx
mov edx, dword [ebp - 4]
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp - 8]
add ebx, edx
mov edx, dword [ebp + 0x24]
add eax, ecx
mov ecx, dword [ebp + 0x28]
add edi, edx
dec ecx
mov dword [ebp + 0x4c], eax
mov dword [ebp + 0x28], ecx
jne 0x421b14
mov eax, dword [ebp + 0x34]
test eax, eax
je case.0x41fdd5.13
mov edx, dword [eax + 8]
lea ecx, [eax + 8]
call dword [edx]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov cl, byte [ebx + 9]
test cl, cl
je 0x422142
mov dx, word [ebx + 0x18]
mov cx, word [ebx + 0x1a]
shr dx, 0xb
shl edx, 5
shr cx, 0xb
or edx, ecx
mov cx, word [ebx + 0x1c]
shl edx, 5
shr cx, 0xb
or edx, ecx
movsx esi, dx
mov ecx, esi
mov dword [ebp + 0x38], edx
shl ecx, 0x10
or ecx, esi
mov esi, dword [ebp + 0x48]
mov dword [ebp + 0x2c], ecx
mov ecx, esi
sar ecx, 1
add ecx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0xc], ecx
lea ebx, [esi + eax]
mov eax, dword [ebp + 0x44]
mov dword [ebp + 8], ebx
lea edi, [esi + eax]
mov eax, dword [ebp + 0x40]
add eax, esi
mov esi, dword [ebp - 4]
add esi, eax
mov dword [ebp - 4], esi
mov esi, dword [ebp + 0x24]
add esi, eax
mov dword [ebp + 0x24], esi
mov esi, dword [ebp + 0x20]
sar eax, 1
add esi, eax
mov eax, dword [ebp - 0xc]
mov dword [ebp + 0x20], esi
mov dword [ebp + 0x18], eax
mov eax, dword [ebp + 0x48]
test eax, eax
je 0x421f9d
mov al, byte [ecx - 1]
test al, al
mov byte [ebp + 0x14], al
jne 0x421f3f
mov ax, word [ebx - 2]
mov word [edi - 2], ax
jmp 0x421f9d
cmp al, 0x3f
jne 0x421f49
mov word [edi - 2], dx
jmp 0x421f9d
mov cx, word [ebx - 2]
mov esi, dword [ebp + 0x14]
and ecx, 0xffff
and esi, 0xff
mov eax, ecx
and ecx, 0x7c1f
and eax, 0x3e0
shl eax, 0xf
or eax, ecx
mov ecx, esi
xor ecx, 0x3e
shr ecx, 1
imul eax, ecx
mov ecx, eax
shr ecx, 0x14
shr eax, 5
and ecx, 0x3e0
and eax, 0x7c1f
or ecx, eax
mov eax, dword [esi*4 + 0x470ea0]
add ecx, eax
mov word [edi - 2], cx
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x18]
test eax, eax
jle 0x4220a4
mov dword [ebp + 0x10], eax
mov si, word [ecx]
add ecx, 2
test si, si
mov dword [ebp + 0xc], ecx
jne 0x421fcb
mov eax, dword [ebx]
mov dword [edi], eax
add edi, 4
add ebx, 4
mov dword [ebp + 8], ebx
jmp 0x422097
cmp si, 0x3f3f
jne 0x421fe5
mov eax, dword [ebp + 0x2c]
mov dword [edi], eax
add edi, 4
add ebx, 4
mov dword [ebp + 8], ebx
jmp 0x422097
mov eax, dword [ebp + 8]
mov edx, dword [eax]
add eax, 4
mov dword [ebp + 8], eax
mov eax, esi
and eax, 0xffff
xor esi, 0x3f3f
mov ecx, eax
and eax, 0x3f
shr ecx, 8
mov eax, dword [eax*4 + 0x470ea0]
and esi, 0xffff
mov ebx, dword [ecx*4 + 0x470ea0]
mov dword [ebp + 0x3c], eax
mov eax, edx
mov ecx, edx
shr eax, 0x10
and eax, 0x7c1f
and ecx, 0x3e00000
or eax, ecx
mov ecx, esi
shr ecx, 9
imul eax, ecx
mov ecx, edx
and edx, 0x7c1f
and ecx, 0x3e0
shl ecx, 0xf
shr esi, 1
or ecx, edx
and esi, 0x1f
imul ecx, esi
mov edx, eax
mov esi, dword [ebp + 0x3c]
and edx, 0xf83e0
shr eax, 5
shl edx, 0xb
and eax, 0x3e00000
or edx, eax
mov eax, ecx
shr eax, 0xf
and eax, 0x7c00
and ecx, 0xf83e0
or eax, ecx
mov ecx, dword [ebp + 0xc]
shl ebx, 0x10
shr eax, 5
add edx, ebx
mov ebx, dword [ebp + 8]
add eax, esi
or edx, eax
mov dword [edi], edx
mov edx, dword [ebp + 0x38]
add edi, 4
mov eax, dword [ebp + 0x10]
dec eax
mov dword [ebp + 0x10], eax
jne 0x421fab
mov eax, dword [ebp + 0x40]
test eax, eax
je 0x422117
mov al, byte [ecx]
test al, al
mov byte [ebp + 0x34], al
jne 0x4220bc
mov ax, word [ebx]
mov word [edi], ax
jmp 0x422117
cmp al, 0x3f
jne 0x4220c5
mov word [edi], dx
jmp 0x422117
mov cx, word [ebx]
mov esi, dword [ebp + 0x34]
and ecx, 0xffff
and esi, 0xff
mov eax, ecx
and ecx, 0x7c1f
and eax, 0x3e0
shl eax, 0xf
or eax, ecx
mov ecx, esi
xor ecx, 0x3e
shr ecx, 1
imul eax, ecx
mov ecx, eax
shr ecx, 0x14
shr eax, 5
and ecx, 0x3e0
and eax, 0x7c1f
or ecx, eax
mov eax, dword [esi*4 + 0x470ea0]
add ecx, eax
mov word [edi], cx
mov ecx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x20]
mov eax, dword [ebp - 4]
add ecx, esi
mov esi, dword [ebp + 0x24]
add ebx, eax
mov eax, dword [ebp + 0x18]
add edi, esi
dec eax
mov dword [ebp + 0xc], ecx
mov dword [ebp + 8], ebx
mov dword [ebp + 0x18], eax
jne 0x421f24
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov ecx, dword [ebp + 0x48]
mov edx, ecx
sar edx, 1
add edx, eax
mov eax, dword [ebp - 0x20]
lea ebx, [ecx + edi]
mov edi, dword [ebp + 0x40]
lea esi, [ecx + eax]
mov eax, dword [ebp + 0x44]
add ecx, eax
mov eax, dword [ebp + 0x48]
add eax, edi
mov edi, dword [ebp - 4]
add edi, eax
mov dword [ebp + 0xc], edx
mov dword [ebp - 4], edi
mov edi, dword [ebp - 8]
add edi, eax
mov dword [ebp + 0x44], ecx
mov dword [ebp - 8], edi
mov edi, dword [ebp + 0x24]
add edi, eax
mov dword [ebp + 0x24], edi
mov edi, dword [ebp + 0x20]
sar eax, 1
add edi, eax
mov eax, dword [ebp - 0xc]
mov dword [ebp + 0x20], edi
mov dword [ebp + 0x18], eax
mov eax, dword [ebp + 0x48]
test eax, eax
je 0x422237
mov al, byte [edx - 1]
test al, al
mov byte [ebp + 0x14], al
jne 0x4221b1
mov ax, word [esi - 2]
mov word [ecx - 2], ax
jmp 0x422237
cmp al, 0x3f
jne 0x4221bf
mov ax, word [ebx - 2]
mov word [ecx - 2], ax
jmp 0x422237
mov ax, word [ebx - 2]
mov di, word [esi - 2]
mov edx, dword [ebp + 0x14]
and eax, 0xffff
and edi, 0xffff
mov dword [ebp + 0x10], eax
mov eax, edi
and edx, 0xff
and eax, 0x3e0
mov dword [ebp + 8], edx
shl eax, 0xf
and edi, 0x7c1f
xor edx, 0x3e
or eax, edi
shr edx, 1
imul eax, edx
mov edx, dword [ebp + 0x10]
mov edi, edx
and edx, 0x7c1f
and edi, 0x3e0
shl edi, 0xf
or edi, edx
mov edx, dword [ebp + 8]
shr edx, 1
imul edi, edx
add eax, edi
mov edx, eax
shr edx, 0x14
shr eax, 5
and edx, 0x3e0
and eax, 0x7c1f
or edx, eax
mov word [ecx - 2], dx
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x18]
test eax, eax
jle 0x42236a
mov dword [ebp + 0x10], eax
mov ax, word [edx]
add edx, 2
test ax, ax
mov dword [ebp + 0xc], edx
jne 0x422268
mov eax, dword [esi]
add esi, 4
mov dword [ecx], eax
add ecx, 4
mov dword [ebp + 0x44], ecx
add ebx, 4
jmp 0x42235d
cmp ax, 0x3f3f
jne 0x422283
mov eax, dword [ebx]
add ebx, 4
mov dword [ecx], eax
add ecx, 4
mov dword [ebp + 0x44], ecx
add esi, 4
jmp 0x42235d
mov edx, dword [esi]
mov cx, ax
shr al, 1
and al, 0x1f
mov edi, edx
mov byte [ebp + 0x3c], al
mov eax, edx
shr cx, 9
mov byte [ebp + 0x2c], cl
mov ecx, dword [ebp + 0x2c]
shr eax, 0x10
and eax, 0x7c1f
and edi, 0x3e00000
and ecx, 0xff
or eax, edi
add esi, 4
mov edi, ecx
mov dword [ebp + 8], esi
mov esi, dword [ebx]
xor edi, 0x1f
add ebx, 4
imul eax, edi
mov edi, esi
mov dword [ebp + 0x4c], ebx
shr edi, 0x10
mov ebx, esi
and edi, 0x7c1f
and ebx, 0x3e00000
or edi, ebx
mov ebx, dword [ebp + 0x4c]
imul edi, ecx
mov ecx, edx
add eax, edi
mov edi, dword [ebp + 0x3c]
and ecx, 0x3e0
shl ecx, 0xf
and edx, 0x7c1f
and edi, 0xff
or ecx, edx
mov edx, edi
xor edx, 0x1f
imul ecx, edx
mov edx, esi
and esi, 0x7c1f
and edx, 0x3e0
shl edx, 0xf
or edx, esi
mov esi, dword [ebp + 8]
imul edx, edi
add ecx, edx
mov edx, ecx
and ecx, 0xf83e0
shr edx, 0xf
and edx, 0x7c00
or edx, ecx
mov ecx, eax
and ecx, 0x7c000000
and eax, 0xf83e0
or edx, ecx
mov ecx, dword [ebp + 0x44]
shr edx, 5
shl eax, 0xb
or edx, eax
mov dword [ecx], edx
mov edx, dword [ebp + 0xc]
add ecx, 4
mov dword [ebp + 0x44], ecx
mov eax, dword [ebp + 0x10]
dec eax
mov dword [ebp + 0x10], eax
jne 0x422245
mov eax, dword [ebp + 0x40]
test eax, eax
je 0x422430
mov al, byte [edx]
test al, al
mov byte [ebp + 0x38], al
jne 0x422389
mov ax, word [esi]
mov word [ecx], ax
jmp 0x422430
cmp al, 0x3f
jne 0x422398
mov ax, word [ebx]
mov word [ecx], ax
jmp 0x422430
mov eax, dword [ebp + 0x38]
mov di, word [esi]
and eax, 0xff
and edi, 0xffff
mov dword [ebp + 0x10], eax
mov eax, edi
and eax, 0x7c00
mov dword [ebp + 8], edi
shl eax, 5
and edi, 0x3e0
mov dx, word [ebx]
or eax, edi
mov edi, dword [ebp + 8]
shl eax, 5
and edi, 0x1f
and edx, 0xffff
or eax, edi
mov edi, dword [ebp + 0x10]
xor edi, 0x3e
mov dword [ebp + 0x34], edx
shr edi, 1
imul eax, edi
mov edi, edx
and edx, 0x3e0
and edi, 0x7c00
shl edi, 5
or edi, edx
mov edx, dword [ebp + 0x34]
shl edi, 5
and edx, 0x1f
or edi, edx
mov edx, dword [ebp + 0x10]
shr edx, 1
imul edi, edx
add eax, edi
mov edx, eax
mov edi, eax
shr edx, 0xa
shr edi, 5
and edx, 0x3e0
and edi, 0x1f
shr eax, 0xf
or edx, edi
and eax, 0x7c00
or edx, eax
mov word [ecx], dx
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x20]
mov edi, dword [ebp - 8]
add edx, eax
mov eax, dword [ebp - 4]
add ebx, edi
mov edi, dword [ebp + 0x24]
add esi, eax
mov eax, dword [ebp + 0x18]
add ecx, edi
dec eax
mov dword [ebp + 0xc], edx
mov dword [ebp + 0x44], ecx
mov dword [ebp + 0x18], eax
jne 0x42218f
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov cl, byte [ebx + 9]
test cl, cl
je 0x4226f3
mov dx, word [ebx + 0x18]
mov cx, word [ebx + 0x1a]
shr dx, 0xb
shl edx, 5
shr cx, 0xb
or edx, ecx
mov cx, word [ebx + 0x1c]
shl edx, 5
shr cx, 0xb
or edx, ecx
movsx esi, dx
mov ecx, esi
mov dword [ebp + 0x38], edx
shl ecx, 0x10
or ecx, esi
mov esi, dword [ebp + 0x48]
mov dword [ebp + 0x2c], ecx
mov ecx, esi
sar ecx, 1
add ecx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0xc], ecx
lea ebx, [esi + eax]
mov eax, dword [ebp + 0x44]
mov dword [ebp + 8], ebx
lea edi, [esi + eax]
mov eax, dword [ebp + 0x40]
add eax, esi
mov esi, dword [ebp - 4]
add esi, eax
mov dword [ebp - 4], esi
mov esi, dword [ebp + 0x24]
add esi, eax
mov dword [ebp + 0x24], esi
mov esi, dword [ebp + 0x20]
sar eax, 1
add esi, eax
mov eax, dword [ebp - 0xc]
mov dword [ebp + 0x20], esi
mov dword [ebp + 0x18], eax
mov eax, dword [ebp + 0x48]
test eax, eax
je 0x422552
mov al, byte [ecx - 1]
test al, al
mov byte [ebp + 0x14], al
jne 0x4224f8
mov ax, word [ebx - 2]
mov word [edi - 2], ax
jmp 0x422552
cmp al, 0x3f
jne 0x422502
mov word [edi - 2], dx
jmp 0x422552
mov cx, word [ebx - 2]
mov esi, dword [ebp + 0x14]
and ecx, 0xffff
and esi, 0xff
mov eax, ecx
and ecx, 0xf81f
and eax, 0x7e0
shl eax, 0xf
or eax, ecx
mov ecx, esi
xor ecx, 0x3e
shr ecx, 1
imul eax, ecx
mov ecx, eax
shr ecx, 5
shr eax, 0x14
xor eax, ecx
and eax, 0x7e0
xor eax, ecx
mov ecx, dword [esi*4 + 0x470ea0]
add eax, ecx
mov ecx, dword [ebp + 0xc]
mov word [edi - 2], ax
mov eax, dword [ebp - 0x18]
test eax, eax
jle 0x422659
mov dword [ebp + 0x10], eax
mov si, word [ecx]
add ecx, 2
test si, si
mov dword [ebp + 0xc], ecx
jne 0x422580
mov eax, dword [ebx]
mov dword [edi], eax
add edi, 4
add ebx, 4
mov dword [ebp + 8], ebx
jmp 0x42264c
cmp si, 0x3f3f
jne 0x42259a
mov eax, dword [ebp + 0x2c]
mov dword [edi], eax
add edi, 4
add ebx, 4
mov dword [ebp + 8], ebx
jmp 0x42264c
mov eax, dword [ebp + 8]
mov edx, dword [eax]
add eax, 4
mov dword [ebp + 8], eax
mov eax, esi
and eax, 0xffff
xor esi, 0x3f3f
mov ecx, eax
and eax, 0x3f
shr ecx, 8
mov eax, dword [eax*4 + 0x470ea0]
and esi, 0xffff
mov ebx, dword [ecx*4 + 0x470ea0]
mov dword [ebp + 0x3c], eax
mov eax, edx
mov ecx, edx
shr eax, 0x10
and eax, 0xf81f
and ecx, 0x7e00000
or eax, ecx
mov ecx, esi
shr ecx, 9
imul eax, ecx
mov ecx, edx
and edx, 0xf81f
and ecx, 0x7e0
shl ecx, 0xf
shr esi, 1
or ecx, edx
and esi, 0x1f
imul ecx, esi
mov edx, eax
and eax, 0xffff03e0
shr edx, 5
and edx, 0x7e00000
mov esi, dword [ebp + 0x3c]
shl eax, 0xb
or edx, eax
mov eax, ecx
shr eax, 0xf
and eax, 0xfc00
and ecx, 0x1f03e0
or eax, ecx
mov ecx, dword [ebp + 0xc]
shl ebx, 0x10
shr eax, 5
add edx, ebx
mov ebx, dword [ebp + 8]
add eax, esi
or edx, eax
mov dword [edi], edx
mov edx, dword [ebp + 0x38]
add edi, 4
mov eax, dword [ebp + 0x10]
dec eax
mov dword [ebp + 0x10], eax
jne 0x422560
mov eax, dword [ebp + 0x40]
test eax, eax
je 0x4226c8
mov al, byte [ecx]
test al, al
mov byte [ebp + 0x34], al
jne 0x422671
mov ax, word [ebx]
mov word [edi], ax
jmp 0x4226c8
cmp al, 0x3f
jne 0x42267a
mov word [edi], dx
jmp 0x4226c8
mov cx, word [ebx]
mov esi, dword [ebp + 0x34]
and ecx, 0xffff
and esi, 0xff
mov eax, ecx
and ecx, 0xf81f
and eax, 0x7e0
shl eax, 0xf
or eax, ecx
mov ecx, esi
xor ecx, 0x3e
shr ecx, 1
imul eax, ecx
mov ecx, eax
shr ecx, 5
shr eax, 0x14
xor eax, ecx
and eax, 0x7e0
xor eax, ecx
mov ecx, dword [esi*4 + 0x470ea0]
add eax, ecx
mov ecx, dword [ebp + 0xc]
mov word [edi], ax
mov esi, dword [ebp + 0x20]
mov eax, dword [ebp - 4]
add ecx, esi
mov esi, dword [ebp + 0x24]
add ebx, eax
mov eax, dword [ebp + 0x18]
add edi, esi
dec eax
mov dword [ebp + 0xc], ecx
mov dword [ebp + 8], ebx
mov dword [ebp + 0x18], eax
jne 0x4224dd
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov edx, dword [ebp + 0x48]
mov ecx, dword [ebp + 0x44]
mov esi, edx
add edi, edx
sar esi, 1
add esi, eax
mov eax, dword [ebp - 0x20]
add ecx, edx
mov dword [ebp + 0xc], esi
lea ebx, [edx + eax]
mov eax, dword [ebp + 0x40]
add eax, edx
mov edx, dword [ebp - 4]
add edx, eax
mov dword [ebp + 0x44], ecx
mov dword [ebp - 4], edx
mov edx, dword [ebp - 8]
add edx, eax
mov dword [ebp - 8], edx
mov edx, dword [ebp + 0x24]
add edx, eax
mov dword [ebp + 0x24], edx
mov edx, dword [ebp + 0x20]
sar eax, 1
add edx, eax
mov dword [ebp + 0x20], edx
mov edx, dword [ebp - 0xc]
mov dword [ebp + 0x18], edx
mov eax, dword [ebp + 0x48]
test eax, eax
je 0x4227df
mov al, byte [esi - 1]
test al, al
mov byte [ebp + 0x14], al
jne 0x42275e
mov ax, word [ebx - 2]
mov word [ecx - 2], ax
jmp 0x4227df
cmp al, 0x3f
jne 0x42276c
mov dx, word [edi - 2]
mov word [ecx - 2], dx
jmp 0x4227df
mov eax, dword [ebp + 0x14]
mov dx, word [ebx - 2]
and eax, 0xff
and edx, 0xffff
mov dword [ebp + 0x10], eax
mov eax, edx
mov si, word [edi - 2]
and eax, 0x7e0
shl eax, 0xf
and edx, 0xf81f
and esi, 0xffff
or eax, edx
mov edx, dword [ebp + 0x10]
xor edx, 0x3e
shr edx, 1
imul eax, edx
mov edx, esi
and esi, 0xf81f
and edx, 0x7e0
shl edx, 0xf
or edx, esi
mov esi, edx
mov edx, dword [ebp + 0x10]
shr edx, 1
imul esi, edx
add eax, esi
mov esi, dword [ebp + 0xc]
mov edx, eax
shr edx, 5
shr eax, 0x14
xor eax, edx
and eax, 0x7e0
xor eax, edx
mov word [ecx - 2], ax
mov eax, dword [ebp - 0x18]
test eax, eax
jle 0x422912
mov dword [ebp + 0x10], eax
mov ax, word [esi]
add esi, 2
test ax, ax
mov dword [ebp + 0xc], esi
jne 0x422810
mov eax, dword [ebx]
add ebx, 4
mov dword [ecx], eax
add ecx, 4
mov dword [ebp + 0x44], ecx
add edi, 4
jmp 0x422905
cmp ax, 0x3f3f
jne 0x42282b
mov edx, dword [edi]
add edi, 4
mov dword [ecx], edx
add ecx, 4
mov dword [ebp + 0x44], ecx
add ebx, 4
jmp 0x422905
mov edx, dword [ebx]
mov esi, dword [edi]
mov cx, ax
add edi, 4
shr al, 1
and al, 0x1f
mov dword [ebp + 0x4c], edi
mov byte [ebp + 0x3c], al
mov eax, edx
shr cx, 9
mov byte [ebp + 0x2c], cl
mov ecx, dword [ebp + 0x2c]
shr eax, 0x10
mov edi, edx
and eax, 0xf81f
and edi, 0x7e00000
and ecx, 0xff
or eax, edi
mov edi, ecx
xor edi, 0x1f
add ebx, 4
imul eax, edi
mov edi, esi
mov dword [ebp + 8], ebx
shr edi, 0x10
mov ebx, esi
and edi, 0xf81f
and ebx, 0x7e00000
or edi, ebx
mov ebx, dword [ebp + 8]
imul edi, ecx
mov ecx, edx
add eax, edi
mov edi, dword [ebp + 0x3c]
and ecx, 0x7e0
shl ecx, 0xf
and edx, 0xf81f
and edi, 0xff
or ecx, edx
mov edx, edi
xor edx, 0x1f
imul ecx, edx
mov edx, esi
and esi, 0xf81f
and edx, 0x7e0
shl edx, 0xf
or edx, esi
mov esi, dword [ebp + 0xc]
imul edx, edi
add ecx, edx
mov edi, dword [ebp + 0x4c]
mov edx, ecx
and ecx, 0x1f03e0
shr edx, 0xf
and edx, 0xfc00
or edx, ecx
mov ecx, eax
and ecx, 0xfc00001f
and eax, 0xffff03e0
or edx, ecx
mov ecx, dword [ebp + 0x44]
shr edx, 5
shl eax, 0xb
or edx, eax
mov dword [ecx], edx
add ecx, 4
mov dword [ebp + 0x44], ecx
mov eax, dword [ebp + 0x10]
dec eax
mov dword [ebp + 0x10], eax
jne 0x4227ed
mov eax, dword [ebp + 0x40]
test eax, eax
je 0x4229d8
mov al, byte [esi]
test al, al
mov byte [ebp + 0x38], al
jne 0x422931
mov dx, word [ebx]
mov word [ecx], dx
jmp 0x4229d8
cmp al, 0x3f
jne 0x422940
mov ax, word [edi]
mov word [ecx], ax
jmp 0x4229d8
mov eax, dword [ebp + 0x38]
mov si, word [ebx]
and eax, 0xff
and esi, 0xffff
mov dword [ebp + 0x10], eax
mov eax, esi
and eax, 0xf800
mov dword [ebp + 8], esi
shl eax, 5
and esi, 0x7e0
mov dx, word [edi]
or eax, esi
mov esi, dword [ebp + 8]
shl eax, 5
and esi, 0x1f
and edx, 0xffff
or eax, esi
mov esi, dword [ebp + 0x10]
xor esi, 0x3e
mov dword [ebp + 0x34], edx
shr esi, 1
imul eax, esi
mov esi, edx
and edx, 0x7e0
and esi, 0xf800
shl esi, 5
or esi, edx
mov edx, dword [ebp + 0x34]
shl esi, 5
and edx, 0x1f
or esi, edx
mov edx, dword [ebp + 0x10]
shr edx, 1
imul esi, edx
add eax, esi
mov edx, eax
mov esi, eax
shr edx, 0xa
shr esi, 5
and edx, 0x7e0
and esi, 0x1f
shr eax, 0xf
or edx, esi
mov esi, dword [ebp + 0xc]
and eax, 0xf800
or edx, eax
mov word [ecx], dx
mov eax, dword [ebp + 0x20]
mov edx, dword [ebp - 8]
add esi, eax
mov eax, dword [ebp - 4]
add edi, edx
mov edx, dword [ebp + 0x24]
add ebx, eax
mov eax, dword [ebp + 0x18]
add ecx, edx
dec eax
mov dword [ebp + 0xc], esi
mov dword [ebp + 0x44], ecx
mov dword [ebp + 0x18], eax
jne 0x42273c
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov ecx, dword [ebp - 8]
mov esi, dword [ebp + 0x44]
add ecx, 3
mov edx, edi
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 4]
add ecx, 3
mov edi, dword [ebp - 0x20]
mov dword [ebp - 4], ecx
mov ecx, dword [ebp + 0x24]
add ecx, 3
mov dword [ebp + 0x24], ecx
mov cl, byte [ebx + 9]
test cl, cl
je 0x422bee
xor ecx, ecx
xor edx, edx
mov cx, word [ebx + 0x18]
mov dx, word [ebx + 0x1c]
shr ecx, 8
mov dword [ebp + 0x3c], ecx
xor ecx, ecx
mov cx, word [ebx + 0x1a]
mov ebx, edx
mov edx, dword [ebp + 0x3c]
shr ecx, 8
shl edx, 8
or edx, ecx
mov dword [ebp + 0x1c], ecx
mov ecx, dword [ebp - 0x1c]
shr ebx, 8
shl edx, 8
mov dword [ebp + 0x4c], ebx
or edx, ebx
mov ebx, dword [ebp - 0xc]
dec ecx
mov dword [ebp + 0x14], edx
mov dword [ebp + 0xc], ecx
mov dword [ebp + 0x38], ebx
jmp 0x422a81
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0xc]
test ecx, ecx
jle 0x422b76
mov dword [ebp + 0x2c], ecx
mov cl, byte [eax]
inc eax
test cl, cl
mov byte [ebp + 8], cl
mov dword [ebp + 0x10], eax
jne 0x422ab5
mov ecx, dword [esi]
add esi, 3
mov ebx, ecx
xor ebx, dword [edi]
and ebx, 0xffffff
xor ebx, ecx
add edi, 3
mov dword [esi - 3], ebx
jmp 0x422b69
cmp cl, 0x3f
jne 0x422ad1
mov ecx, dword [esi]
add edi, 3
and ecx, 0xff000000
or ecx, edx
mov dword [esi], ecx
add esi, 3
jmp 0x422b69
mov edx, dword [esi]
mov eax, dword [edi]
mov dword [ebp + 0x30], edx
mov edx, dword [ebp + 8]
and edx, 0xff
xor cl, 0x3f
mov byte [ebp + 8], cl
mov ecx, eax
mov edx, dword [edx*4 + 0x470ea0]
and ecx, 0xfffe0000
mov dword [ebp + 0x34], edx
mov edx, eax
shl ecx, 5
and edx, 0xfe00
add edi, 3
or ecx, edx
shr eax, 2
shl ecx, 3
and eax, 0x3f
or ecx, eax
mov dword [ebp + 0x18], ecx
mov eax, dword [ebp + 0x18]
movzx edx, byte [ebp + 8]
mul edx
mov ebx, eax
shl edx, 0x12
mov ecx, eax
shr eax, 0xe
and ebx, 0xff0
or edx, eax
and ecx, 0x1fe0000
shr ebx, 4
and edx, 0xff0000
shr ecx, 9
or ebx, edx
or ebx, ecx
mov dword [ebp + 0x18], ebx
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x34]
lea edx, [eax + ecx]
mov eax, dword [ebp + 0x30]
and eax, 0xff000000
or edx, eax
mov eax, dword [ebp + 0x10]
mov dword [esi], edx
mov edx, dword [ebp + 0x14]
add esi, 3
mov ecx, dword [ebp + 0x2c]
dec ecx
mov dword [ebp + 0x2c], ecx
jne 0x422a8c
mov cl, byte [eax]
mov ebx, dword [ebp + 0x3c]
mov byte [ebp + 0x28], cl
xor ecx, ecx
mov cl, byte [edi + 2]
mov edx, dword [ebp + 0x28]
and edx, 0xff
sub ebx, ecx
imul ebx, edx
shr ebx, 6
add bl, cl
xor ecx, ecx
mov byte [esi + 2], bl
mov cl, byte [edi + 1]
mov ebx, dword [ebp + 0x1c]
mov dword [ebp + 0x10], ecx
sub ebx, ecx
imul ebx, edx
shr ebx, 6
add bl, cl
xor ecx, ecx
mov byte [esi + 1], bl
mov cl, byte [edi]
mov ebx, dword [ebp + 0x4c]
mov dword [ebp + 0x10], ecx
sub ebx, ecx
imul ebx, edx
mov edx, dword [ebp + 0x24]
shr ebx, 6
add bl, cl
mov ecx, dword [ebp + 0x38]
mov byte [esi], bl
mov ebx, dword [ebp - 4]
add esi, edx
mov edx, dword [ebp + 0x20]
add edi, ebx
dec ecx
lea eax, [eax + edx + 1]
mov dword [ebp + 0x38], ecx
jne 0x422a7b
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov ecx, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0xc]
dec ecx
mov dword [ebp + 0x14], ebx
mov dword [ebp + 0xc], ecx
jmp 0x422c00
mov ecx, dword [ebp + 0xc]
test ecx, ecx
jle 0x422cf6
mov dword [ebp + 0x18], ecx
mov cl, byte [eax]
inc eax
test cl, cl
mov byte [ebp + 0x2c], cl
mov dword [ebp + 0x10], eax
jne 0x422c36
mov ecx, dword [esi]
add edx, 3
mov ebx, ecx
xor ebx, dword [edi]
add edi, 3
and ebx, 0xffffff
xor ebx, ecx
mov dword [esi], ebx
add esi, 3
jmp 0x422ce9
cmp cl, 0x3f
jne 0x422c59
mov ecx, dword [esi]
add edx, 3
mov ebx, ecx
add edi, 3
xor ebx, dword [edx]
and ebx, 0xffffff
xor ebx, ecx
mov dword [esi], ebx
add esi, 3
jmp 0x422ce9
mov eax, dword [edx]
mov ecx, dword [edi]
add edx, 3
mov ebx, eax
mov dword [ebp + 0x4c], edx
mov edx, dword [ebp + 0x2c]
and edx, 0xff
and ebx, 0xff0000
mov dword [ebp + 8], edx
mov edx, ecx
and edx, 0xff0000
mov dword [ebp + 0x3c], ecx
sub ebx, edx
mov edx, eax
imul ebx, dword [ebp + 8]
and ecx, 0xff
and edx, 0xff
sub edx, ecx
mov ecx, dword [ebp + 0x3c]
imul edx, dword [ebp + 8]
and ebx, 0x3fc00000
and edx, 0x3fc0
or ebx, edx
mov edx, ecx
and edx, 0xff00
and eax, 0xff00
sub eax, edx
mov edx, dword [ebp + 0x4c]
imul eax, dword [ebp + 8]
and eax, 0x3fc000
and ecx, 0xfefefe
or ebx, eax
mov eax, dword [esi]
sar ebx, 6
add ebx, ecx
and eax, 0xff000000
or ebx, eax
mov eax, dword [ebp + 0x10]
add edi, 3
mov dword [esi], ebx
add esi, 3
mov ecx, dword [ebp + 0x18]
dec ecx
mov dword [ebp + 0x18], ecx
jne 0x422c0b
mov cl, byte [eax]
mov byte [ebp + 0x38], cl
xor ecx, ecx
mov ebx, dword [ebp + 0x38]
mov cl, byte [edi + 2]
and ebx, 0xff
mov dword [ebp + 8], ecx
mov dword [ebp + 0x10], ebx
xor ebx, ebx
mov bl, byte [edx + 2]
sub ebx, ecx
imul ebx, dword [ebp + 0x10]
shr ebx, 6
add bl, cl
xor ecx, ecx
mov byte [esi + 2], bl
mov cl, byte [edi + 1]
xor ebx, ebx
mov dword [ebp + 8], ecx
mov bl, byte [edx + 1]
sub ebx, ecx
imul ebx, dword [ebp + 0x10]
shr ebx, 6
add bl, cl
xor ecx, ecx
mov byte [esi + 1], bl
mov cl, byte [edi]
xor ebx, ebx
mov dword [ebp + 8], ecx
mov bl, byte [edx]
sub ebx, ecx
imul ebx, dword [ebp + 0x10]
shr ebx, 6
add bl, cl
mov ecx, dword [ebp - 8]
mov byte [esi], bl
mov ebx, dword [ebp - 4]
add edx, ecx
mov ecx, dword [ebp + 0x20]
add edi, ebx
mov ebx, dword [ebp + 0x24]
lea eax, [eax + ecx + 1]
mov ecx, dword [ebp + 0x14]
add esi, ebx
dec ecx
mov dword [ebp + 0x14], ecx
jne 0x422bfd
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov cl, byte [ebx + 9]
mov esi, dword [ebp + 0x44]
mov edx, edi
mov edi, dword [ebp - 0x20]
test cl, cl
je 0x422eb1
xor edx, edx
xor ecx, ecx
mov dx, word [ebx + 0x1a]
mov cx, word [ebx + 0x18]
shr edx, 8
mov dword [ebp + 0xc], edx
xor edx, edx
mov dx, word [ebx + 0x1c]
shr ecx, 8
mov ebx, ecx
mov dword [ebp + 0x3c], ecx
mov ecx, dword [ebp + 0xc]
shl ebx, 8
or ebx, ecx
shr edx, 8
shl ebx, 8
mov dword [ebp + 0x38], edx
or ebx, edx
mov edx, dword [ebp - 0xc]
mov dword [ebp + 0x34], ebx
mov dword [ebp + 0x18], edx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp + 8], ecx
mov cl, byte [eax]
inc eax
test cl, cl
mov byte [ebp + 0x14], cl
mov dword [ebp + 0x10], eax
jne 0x422df2
mov edx, dword [edi]
mov dword [esi], edx
add esi, 4
add edi, 4
jmp 0x422e7f
mov ecx, dword [ebp + 0x14]
and ecx, 0xff
cmp ecx, 0x3f3f
jne 0x422e0d
mov dword [esi], ebx
add esi, 4
add edi, 4
jmp 0x422e7f
mov eax, dword [edi]
xor ebx, ebx
mov dword [ebp + 0x2c], eax
xor edx, edx
mov dl, byte [ebp + 0x2e]
mov bl, ah
and eax, 0xff
add edi, 4
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0xc]
sub eax, ebx
imul eax, ecx
and al, 0xc0
shl ebx, 6
add eax, ebx
shl eax, 2
mov ebx, eax
mov eax, dword [ebp + 0x3c]
sub eax, edx
and ebx, 0xf800
imul eax, ecx
and eax, 0x3fffc0
shl edx, 6
add eax, edx
mov edx, dword [ebp + 0x38]
shl eax, 0xa
and eax, 0xf80000
or ebx, eax
mov eax, dword [ebp + 0x2c]
sub edx, eax
imul edx, ecx
shr edx, 6
add edx, eax
mov eax, dword [ebp + 0x10]
and edx, 0xf8
or ebx, edx
mov dword [esi], ebx
mov ebx, dword [ebp + 0x34]
add esi, 4
mov ecx, dword [ebp + 8]
dec ecx
mov dword [ebp + 8], ecx
jne 0x422dd6
mov edx, dword [ebp - 4]
mov ecx, dword [ebp + 0x24]
add edi, edx
mov edx, dword [ebp + 0x20]
add esi, ecx
mov ecx, dword [ebp + 0x18]
add eax, edx
dec ecx
mov dword [ebp + 0x18], ecx
jne 0x422dd0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c
mov ecx, dword [ebp - 0xc]
mov dword [ebp + 0x14], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp + 0x18], ecx
mov cl, byte [eax]
inc eax
test cl, cl
mov byte [ebp + 0x2c], cl
mov dword [ebp + 0x10], eax
jne 0x422edc
mov ecx, dword [edi]
add edi, 4
mov dword [esi], ecx
add esi, 4
add edx, 4
jmp 0x422f84
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff
cmp ecx, 0x3f3f
mov dword [ebp + 0xc], ecx
jne 0x422f02
mov ecx, dword [edx]
add edx, 4
mov dword [esi], ecx
add esi, 4
add edi, 4
jmp 0x422f84
mov ecx, dword [edi]
mov eax, dword [edx]
xor ebx, ebx
mov dword [ebp + 8], ecx
mov bl, ch
add edx, 4
and ecx, 0xff
mov dword [ebp + 0x4c], edx
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0x3c], eax
xor edx, edx
xor ecx, ecx
mov dl, byte [ebp + 0xa]
mov cl, byte [ebp + 0x3e]
sub ecx, edx
add edi, 4
imul ecx, dword [ebp + 0xc]
sar ecx, 6
add ecx, edx
mov dword [ebp + 8], ebx
shl ecx, 0x10
mov edx, ecx
xor ecx, ecx
mov cl, ah
and edx, 0xf80000
sub ecx, ebx
and eax, 0xff
imul ecx, dword [ebp + 0xc]
sar ecx, 6
add ecx, ebx
shl ecx, 8
and ecx, 0xf800
or edx, ecx
mov ecx, dword [ebp + 0x38]
sub eax, ecx
imul eax, dword [ebp + 0xc]
sar eax, 6
add eax, ecx
and eax, 0xf8
or edx, eax
mov eax, dword [ebp + 0x10]
mov dword [esi], edx
mov edx, dword [ebp + 0x4c]
add esi, 4
mov ecx, dword [ebp + 0x18]
dec ecx
mov dword [ebp + 0x18], ecx
jne 0x422ebd
mov ecx, dword [ebp - 4]
mov ebx, dword [ebp - 8]
add edi, ecx
mov ecx, dword [ebp + 0x24]
add edx, ebx
mov ebx, dword [ebp + 0x20]
add esi, ecx
mov ecx, dword [ebp + 0x14]
add eax, ebx
dec ecx
mov dword [ebp + 0x14], ecx
jne 0x422eb7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x4c