Function at 0x46d250
Capabilities:
Encode data using xor

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0x68
mov ebp, dword [esp + 0x7c]
test ebp, ebp
je 0x46ef51
cmp dword [esp + 0x80], 0
je 0x46ef51
cmp dword [esp + 0x84], 0
je 0x46ef51
cmp dword [esp + 0x88], 0
je 0x46ef51
cmp dword [esp + 0x90], 0
je 0x46ef51
cmp dword [esp + 0x94], 0
je 0x46ef51
cmp dword [esp + 0x9c], 0
je 0x46ef51
cmp dword [esp + 0xa0], 0
je 0x46ef51
cmp dword [esp + 0xa4], 0
je 0x46ef51
cmp dword [esp + 0xa8], 0
je 0x46ef51
cmp dword [esp + 0xac], 0
je 0x46ef51
mov ecx, dword [ebp]
test ecx, ecx
je 0x46ef51
mov ebx, dword [esp + 0x8c]
cmp ebx, 0x100
jb 0x46ee06
cmp ebx, 0x8000
ja 0x46ee06
cmp dword [esp + 0x98], 0x100
jb 0x46ee06
cmp dword [esp + 0x98], 0x10000
ja 0x46ee06
cmp dword [esp + 0xb0], 0
jl 0x46ee06
cmp dword [esp + 0xb0], 9
jg 0x46ee06
mov esi, dword [esp + 0x84]
mov edx, dword [esp + 0x80]
mov esi, dword [esi]
mov edx, dword [edx]
lea eax, [ebx + esi]
add eax, edx
cmp eax, 0x7fffffff
jb 0x46d3c8
mov eax, dword [esp + 0x84]
mov edi, esi
sub edi, ebx
sub esi, edi
mov dword [eax], esi
mov eax, edi
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x98]
call fcn.0046ef60
cmp dword [esp + 0xb0], 0
jle 0x46d3b3
mov eax, edi
mov ecx, ebx
mov edx, dword [esp + 0x94]
call fcn.0046ef60
mov esi, dword [esp + 0x84]
mov eax, dword [esp + 0x80]
mov ecx, dword [ebp]
mov esi, dword [esi]
mov edx, dword [eax]
mov edi, dword [esp + 0xac]
lea eax, [esi + edx - 0x104]
mov dword [esp + 0x40], eax
sub ecx, esi
cmp dword [esp + 0xb0], 5
mov eax, dword [edi]
mov edi, dword [esp + 0x98]
mov dword [esp + 0x48], eax
mov eax, esi
lea edi, [edi - 1]
mov dword [esp + 0x50], edi
lea edi, [ebx - 1]
mov dword [esp + 0x64], edi
jge 0x46ded9
cmp dword [esp + 0xb0], 0
jne 0x46d825
cmp edx, 3
jb 0x46d42e
movzx edi, byte [ecx + esi]
shl edi, 5
movzx edx, byte [ecx + esi + 1]
xor edi, edx
mov dword [esp + 0x28], edi
jmp 0x46d436
mov dword [esp + 0x28], 0
mov edx, dword [esp + 0x88]
sub edx, esi
mov dword [esp + 0x44], 0
cmp esi, dword [esp + 0x40]
jge 0x46d5e3
mov dword [esp + 0x60], ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x5c], esi
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0x48]
jge 0x46d5c8
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x28]
shl edi, 5
mov ebx, dword [esp + 0x90]
add esi, eax
movzx ebp, byte [esi + 2]
xor edi, ebp
and edi, dword [esp + 0x50]
mov dword [esp + 0x28], edi
mov ebp, dword [ebx + edi*4]
mov dword [ebx + edi*4], eax
mov ebx, eax
sub ebx, ebp
movzx edx, byte [esi]
mov dword [esp + 0x18], edx
cmp ebx, dword [esp + 0x8c]
jl 0x46d4ae
xor ebx, ebx
jmp 0x46d597
cmp ebp, dword [esp + 0x5c]
mov edi, dword [esp + 0x1c]
jl 0x46d4bc
mov edi, dword [esp + 0x60]
mov dword [esp + 0x14], 0
add ebp, edi
mov dword [esp + 0xc], ebx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x10], edx
mov ebx, dword [esp + 0x14]
movzx ecx, byte [ebx + esi]
movzx edx, byte [ebx + ebp]
cmp edx, ecx
jne 0x46ee15
inc ebx
cmp ebx, 0x102
jl 0x46d4d6
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp + 0x14]
lea edx, [ebp - 3]
mov dword [esp + 0x18], edx
movzx edx, dl
movzx ebp, bx
movzx edx, byte [edx + 0x620700]
add edx, 0x101
cmp ebp, 0x101
jge 0x46d52a
movzx esi, byte [ebp + 0x6207ff]
jmp 0x46d535
dec ebp
sar ebp, 7
movzx esi, byte [ebp + 0x620900]
mov ebp, dword [esp + 0xa0]
inc word [ebp + esi*4]
lea ebp, [eax + 1]
mov esi, dword [esp + 0x14]
lea eax, [eax + esi - 1]
cmp ebp, eax
jg 0x46d597
mov dword [esp + 0x44], ecx
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x90]
shl ecx, 5
movzx edx, byte [ebp + esi + 2]
xor ecx, edx
and ecx, ebx
mov dword [edi + ecx*4], ebp
inc ebp
cmp ebp, eax
jle 0x46d56f
mov dword [esp + 0x28], ecx
mov dword [esp + 0x60], esi
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0xa8]
inc eax
mov esi, dword [esp + 0xa4]
mov edi, dword [esp + 0x9c]
mov word [ebp + ecx*2], bx
mov ebx, dword [esp + 0x18]
mov byte [ecx + esi], bl
inc ecx
inc word [edi + edx*4]
cmp eax, dword [esp + 0x40]
jl 0x46d461
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x8c]
mov ebp, dword [esp + 0x7c]
cmp dword [esp + 0xb4], 2
jl 0x46edd1
mov edi, dword [esp + 0x40]
lea edi, [edi + 0x102]
mov dword [esp + 0x24], edi
cmp eax, edi
jge 0x46d7bd
mov dword [esp + 0x5c], esi
mov dword [esp + 0x1c], edx
mov dword [esp + 0x60], ecx
mov esi, dword [esp + 0x44]
cmp esi, dword [esp + 0x48]
jge 0x46d814
mov ebx, dword [esp + 0x60]
mov ebp, dword [esp + 0x28]
shl ebp, 5
mov edx, dword [esp + 0x90]
add ebx, eax
movzx ecx, byte [ebx + 2]
xor ebp, ecx
and ebp, dword [esp + 0x50]
mov dword [esp + 0x28], ebp
mov ecx, dword [edx + ebp*4]
mov dword [edx + ebp*4], eax
mov ebp, eax
sub ebp, ecx
movzx edx, byte [ebx]
mov dword [esp + 0x20], edx
cmp ebp, dword [esp + 0x8c]
jge 0x46d77b
mov edi, dword [esp + 0x40]
sub edi, eax
add edi, 0x102
cmp edi, 0x102
jl 0x46d67a
mov edi, 0x102
mov dword [esp + 0x14], edi
test edi, edi
jle 0x46d77b
cmp ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x1c]
jl 0x46d694
mov edi, dword [esp + 0x60]
mov dword [esp + 0x18], 0
add ecx, edi
mov dword [esp + 0x44], esi
mov dword [esp + 0x54], eax
mov dword [esp + 0x10], ebp
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
movzx ebp, byte [esi + ebx]
movzx eax, byte [esi + ecx]
cmp eax, ebp
jne 0x46d6c3
inc esi
cmp esi, edi
jl 0x46d6b2
mov dword [esp + 0x18], esi
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x10]
cmp dword [esp + 0x18], 3
jl 0x46d77b
mov edx, dword [esp + 0x18]
lea edx, [edx - 3]
movzx ecx, dl
movzx ebx, byte [ecx + 0x620700]
movzx ecx, bp
add ebx, 0x101
mov dword [esp + 0x20], ebx
cmp ecx, 0x101
jge 0x46d70d
movzx ebx, byte [ecx + 0x6207ff]
jmp 0x46d718
dec ecx
sar ecx, 7
movzx ebx, byte [ecx + 0x620900]
mov ecx, dword [esp + 0xa0]
inc word [ecx + ebx*4]
lea ecx, [eax + 1]
mov ebx, dword [esp + 0x18]
lea eax, [eax + ebx - 1]
cmp ecx, eax
jg 0x46d77d
mov dword [esp + 0x44], esi
mov dword [esp + 0x10], ebp
mov dword [esp + 0xc], edx
mov ebx, dword [esp + 0x28]
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x90]
shl ebx, 5
movzx edx, byte [ecx + esi + 2]
xor ebx, edx
and ebx, ebp
mov dword [edi + ebx*4], ecx
inc ecx
cmp ecx, eax
jle 0x46d751
mov dword [esp + 0x60], esi
mov dword [esp + 0x28], ebx
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
jmp 0x46d77d
xor ebp, ebp
mov ecx, dword [esp + 0xa8]
inc eax
mov ebx, dword [esp + 0xa4]
mov word [ecx + esi*2], bp
mov byte [esi + ebx], dl
inc esi
mov edx, dword [esp + 0x9c]
mov ebp, dword [esp + 0x20]
inc word [edx + ebp*4]
cmp eax, dword [esp + 0x24]
jl 0x46d617
mov dword [esp + 0x44], esi
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
mov edx, dword [esp + 0x40]
add edx, 0x104
mov dword [esp + 0x40], edx
cmp eax, edx
jge 0x46edd1
mov dword [esp + 0x5c], esi
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0xa8]
mov ebx, dword [esp + 0xa4]
mov ebp, dword [esp + 0x9c]
cmp esi, dword [esp + 0x48]
jge 0x46d814
xor edx, edx
mov word [edi + esi*2], dx
movzx edx, byte [eax + ecx]
mov byte [esi + ebx], dl
inc esi
movzx edx, byte [eax + ecx]
inc eax
inc word [ebp + edx*4]
cmp eax, dword [esp + 0x40]
jl 0x46d7f0
mov dword [esp + 0x44], esi
mov esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
jmp 0x46edd1
mov edx, dword [esp + 0xb0]
mov dword [esp + 0xc], 2
mov dword [esp + 0x10], 3
mov dword [esp + 0x14], 5
mov dword [esp + 0x18], 0x15
mov edi, dword [esp + edx*4 + 8]
mov edx, dword [esp + 0x88]
sub edx, esi
mov dword [esp + 0x4c], edi
mov dword [esp + 0x58], edx
mov dword [esp + 0x44], 0
cmp esi, dword [esp + 0x40]
jge 0x46db09
mov edx, edi
neg edx
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x5c], esi
cmp ebp, dword [esp + 0x48]
jge 0x46daf2
mov esi, dword [esp + 0x60]
mov edx, eax
mov dword [esp + 0x44], ebp
sub edx, dword [esp + 0x8c]
mov dword [esp + 0x28], edx
add esi, eax
movzx ecx, byte [esi]
movzx ebp, byte [esi + 1]
mov dword [esp + 0x2c], esi
movzx ebx, word [ecx*2 + 0x620100]
movzx ecx, byte [esi + 2]
movzx edi, word [ebp*2 + 0x620300]
xor ebx, edi
mov edi, dword [esp + 0x94]
movzx ebp, word [ecx*2 + 0x620500]
xor ebx, ebp
and ebx, dword [esp + 0x50]
mov ecx, eax
mov ebp, dword [esp + 0x90]
and ecx, dword [esp + 0x64]
mov esi, dword [ebp + ebx*4]
sub edx, esi
mov dword [esp + 0x20], esi
mov dword [edi + ecx*4], esi
mov dword [ebp + ebx*4], eax
mov ebx, 2
mov ecx, esi
mov ebp, dword [esp + 0x44]
test dword [esp + 0x1c], edx
jl 0x46d91e
mov esi, dword [esp + 0x60]
movzx edx, byte [esi + eax]
mov dword [esp + 0x18], edx
jmp 0x46dabf
mov dword [esp + 0x54], eax
xor edx, edx
mov dword [esp + 0x44], ebp
mov dword [esp + 0x20], ecx
cmp esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
jl 0x46d93a
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x30], esi
add ecx, esi
and esi, dword [esp + 0x64]
mov ebp, dword [esp + 0x94]
movzx edi, byte [ecx + ebx - 1]
mov esi, dword [ebp + esi*4]
mov ebp, dword [esp + 0x2c]
movzx eax, byte [ebp + ebx - 1]
movzx ebp, byte [ebp + ebx]
xor eax, edi
movzx edi, byte [ecx + ebx]
xor ebp, edi
or eax, ebp
jne 0x46d9a9
mov dword [esp + 0x24], esi
xor eax, eax
mov edi, dword [esp + 0x2c]
movzx esi, byte [eax + edi]
movzx ebp, byte [eax + ecx]
cmp ebp, esi
jne 0x46d98c
inc eax
cmp eax, 0x102
jl 0x46d978
mov esi, dword [esp + 0x24]
cmp ebx, eax
jge 0x46d9a9
mov ecx, dword [esp + 0x30]
mov ebx, eax
mov dword [esp + 0x20], ecx
cmp eax, 0x102
jge 0x46ee37
inc edx
mov ecx, edx
mov eax, dword [esp + 0x28]
sub ecx, dword [esp + 0x4c]
sub eax, esi
test ecx, eax
jl 0x46d92c
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x44]
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x60]
cmp ebx, 3
movzx edx, byte [esi + eax]
mov dword [esp + 0x18], edx
jle 0x46dab9
neg ecx
add ecx, eax
movzx esi, cx
lea edx, [ebx - 3]
mov dword [esp + 0x18], edx
movzx edx, dl
movzx edx, byte [edx + 0x620700]
add edx, 0x101
cmp esi, 0x101
jge 0x46da12
movzx ecx, byte [esi + 0x6207ff]
mov dword [esp + 0x14], ecx
jmp 0x46da23
lea ecx, [esi - 1]
sar ecx, 7
movzx edi, byte [ecx + 0x620900]
mov dword [esp + 0x14], edi
mov ecx, dword [esp + 0xa0]
mov edi, dword [esp + 0x14]
inc word [ecx + edi*4]
lea ecx, [eax + 1]
lea eax, [eax + ebx - 1]
cmp ecx, eax
jg 0x46dac1
mov dword [esp + 0x44], ebp
mov dword [esp + 0xc], edx
mov dword [esp + 0x54], eax
mov dword [esp + 0x10], esi
mov ebp, dword [esp + 0x60]
mov edx, dword [esp + 0x94]
mov ebx, dword [esp + 0x90]
movzx esi, byte [ecx + ebp]
movzx edi, byte [ecx + ebp + 1]
movzx eax, word [esi*2 + 0x620100]
movzx esi, word [edi*2 + 0x620300]
xor eax, esi
movzx edi, byte [ecx + ebp + 2]
movzx esi, word [edi*2 + 0x620500]
xor eax, esi
and eax, dword [esp + 0x50]
mov esi, dword [esp + 0x64]
and esi, ecx
mov edi, dword [ebx + eax*4]
mov dword [edx + esi*4], edi
mov dword [ebx + eax*4], ecx
inc ecx
cmp ecx, dword [esp + 0x54]
jle 0x46da63
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x44]
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
jmp 0x46dac1
je 0x46ee8c
xor esi, esi
mov ebx, dword [esp + 0xa8]
inc eax
mov edi, dword [esp + 0x9c]
mov ecx, dword [esp + 0x18]
mov word [ebx + ebp*2], si
mov esi, dword [esp + 0xa4]
mov byte [ebp + esi], cl
inc ebp
inc word [edi + edx*4]
cmp eax, dword [esp + 0x40]
jl 0x46d887
mov dword [esp + 0x44], ebp
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x8c]
mov ebp, dword [esp + 0x7c]
cmp dword [esp + 0xb4], 2
jl 0x46edd1
mov edx, dword [esp + 0x40]
lea edi, [edx + 0x102]
cmp eax, edi
jge 0x46ddf2
mov edx, dword [esp + 0x4c]
neg edx
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], edi
mov dword [esp + 0x60], ecx
mov dword [esp + 0x5c], esi
cmp ebp, dword [esp + 0x48]
jge 0x46ee7b
mov esi, dword [esp + 0x60]
mov edx, eax
mov dword [esp + 0x44], ebp
sub edx, dword [esp + 0x8c]
mov dword [esp + 0x34], edx
add esi, eax
movzx ecx, byte [esi]
movzx ebp, byte [esi + 1]
mov dword [esp + 0x38], esi
movzx ebx, word [ecx*2 + 0x620100]
movzx ecx, byte [esi + 2]
movzx edi, word [ebp*2 + 0x620300]
xor ebx, edi
mov edi, dword [esp + 0x94]
movzx ebp, word [ecx*2 + 0x620500]
xor ebx, ebp
and ebx, dword [esp + 0x50]
mov ecx, eax
mov ebp, dword [esp + 0x90]
and ecx, dword [esp + 0x64]
mov esi, dword [ebp + ebx*4]
sub edx, esi
mov dword [edi + ecx*4], esi
mov dword [ebp + ebx*4], eax
mov ebx, dword [esp + 0x40]
sub ebx, eax
add ebx, 0x102
cmp ebx, 0x102
mov dword [esp + 0x24], esi
jl 0x46dbd1
mov ebx, 0x102
mov dword [esp + 0x30], ebx
mov ebx, 2
mov ecx, esi
mov ebp, dword [esp + 0x44]
test dword [esp + 0x18], edx
jl 0x46dbf7
mov esi, dword [esp + 0x60]
movzx edx, byte [esi + eax]
mov dword [esp + 0x1c], edx
jmp 0x46ddaf
mov dword [esp + 0x54], eax
xor edx, edx
mov dword [esp + 0x44], ebp
mov dword [esp + 0x24], ecx
cmp esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
jl 0x46dc13
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x3c], esi
add ecx, esi
and esi, dword [esp + 0x64]
mov ebp, dword [esp + 0x94]
movzx edi, byte [ecx + ebx - 1]
mov esi, dword [ebp + esi*4]
mov ebp, dword [esp + 0x38]
movzx eax, byte [ebp + ebx - 1]
movzx ebp, byte [ebp + ebx]
xor eax, edi
movzx edi, byte [ecx + ebx]
xor ebp, edi
or eax, ebp
jne 0x46dc99
xor eax, eax
cmp dword [esp + 0x30], 0
jle 0x46ee59
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], ebx
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x38]
movzx ebp, byte [eax + edi]
movzx ebx, byte [eax + ecx]
cmp ebx, ebp
jne 0x46ee51
inc eax
cmp eax, esi
jl 0x46dc64
mov ebx, dword [esp + 0x2c]
cmp ebx, eax
mov esi, dword [esp + 0x28]
jge 0x46dc99
mov ecx, dword [esp + 0x3c]
mov ebx, eax
mov dword [esp + 0x24], ecx
cmp eax, dword [esp + 0x30]
jge 0x46ee44
inc edx
mov ecx, edx
mov eax, dword [esp + 0x34]
sub ecx, dword [esp + 0x4c]
sub eax, esi
test ecx, eax
jl 0x46dc05
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x44]
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x60]
cmp ebx, 3
movzx edx, byte [esi + eax]
mov dword [esp + 0x1c], edx
jle 0x46dda9
neg ecx
add ecx, eax
movzx esi, cx
lea edx, [ebx - 3]
mov dword [esp + 0x1c], edx
movzx edx, dl
movzx edx, byte [edx + 0x620700]
add edx, 0x101
cmp esi, 0x101
jge 0x46dd02
movzx ecx, byte [esi + 0x6207ff]
mov dword [esp + 0x14], ecx
jmp 0x46dd13
lea ecx, [esi - 1]
sar ecx, 7
movzx edi, byte [ecx + 0x620900]
mov dword [esp + 0x14], edi
mov ecx, dword [esp + 0xa0]
mov edi, dword [esp + 0x14]
inc word [ecx + edi*4]
lea ecx, [eax + 1]
lea eax, [eax + ebx - 1]
cmp ecx, eax
jg 0x46ddb1
mov dword [esp + 0x44], ebp
mov dword [esp + 0xc], edx
mov dword [esp + 0x54], eax
mov dword [esp + 0x10], esi
mov ebp, dword [esp + 0x60]
mov ebx, dword [esp + 0x94]
mov edx, dword [esp + 0x90]
movzx esi, byte [ecx + ebp]
movzx edi, byte [ecx + ebp + 1]
movzx eax, word [esi*2 + 0x620100]
movzx esi, word [edi*2 + 0x620300]
xor eax, esi
movzx edi, byte [ecx + ebp + 2]
movzx esi, word [edi*2 + 0x620500]
xor eax, esi
and eax, dword [esp + 0x50]
mov esi, dword [esp + 0x64]
and esi, ecx
mov edi, dword [edx + eax*4]
mov dword [ebx + esi*4], edi
mov dword [edx + eax*4], ecx
inc ecx
cmp ecx, dword [esp + 0x54]
jle 0x46dd53
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x44]
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
jmp 0x46ddb1
je 0x46ee66
xor esi, esi
mov ebx, dword [esp + 0xa8]
inc eax
mov edi, dword [esp + 0x9c]
mov ecx, dword [esp + 0x1c]
mov word [ebx + ebp*2], si
mov esi, dword [esp + 0xa4]
mov byte [ebp + esi], cl
inc ebp
inc word [edi + edx*4]
cmp eax, dword [esp + 0x20]
jl 0x46db43
mov dword [esp + 0x44], ebp
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
mov edx, dword [esp + 0x40]
add edx, 0x104
mov dword [esp + 0x40], edx
cmp eax, edx
jge 0x46edd1
mov edx, dword [esp + 0x64]
not edx
mov dword [esp + 0xc], edx
mov dword [esp + 0x5c], esi
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x48]
jge 0x46edc5
mov esi, dword [esp + 0xa8]
xor ebp, ebp
mov edi, dword [esp + 0xa4]
mov word [esi + edx*2], bp
lea esi, [eax + 2]
movzx ebx, byte [eax + ecx]
mov byte [edx + edi], bl
movzx ebp, byte [eax + ecx]
mov ebx, dword [esp + 0x9c]
inc word [ebx + ebp*4]
mov ebx, eax
and ebx, dword [esp + 0x64]
cmp esi, dword [esp + 0x40]
jl 0x46de7a
mov ebp, dword [esp + 0x94]
cmp eax, dword [ebp + ebx*4]
jg 0x46dec8
mov esi, dword [esp + 0x94]
mov ebp, dword [esp + 0xc]
mov dword [esi + ebx*4], ebp
jmp 0x46dec8
movzx ebp, byte [eax + ecx]
movzx esi, byte [eax + ecx + 1]
mov dword [esp + 0x44], edx
movzx edx, word [ebp*2 + 0x620100]
movzx ebp, byte [eax + ecx + 2]
movzx edi, word [esi*2 + 0x620300]
xor edx, edi
movzx esi, word [ebp*2 + 0x620500]
xor edx, esi
and edx, dword [esp + 0x50]
mov esi, dword [esp + 0x90]
mov ebp, dword [esp + 0x94]
mov edi, dword [esi + edx*4]
mov dword [ebp + ebx*4], edi
mov dword [esi + edx*4], eax
mov edx, dword [esp + 0x44]
inc eax
inc edx
cmp eax, dword [esp + 0x40]
jl 0x46de1a
jmp 0x46edc5
mov edx, dword [esp + 0xb0]
mov dword [esp + 0xc], 0x17
mov dword [esp + 0x10], 0x64
mov dword [esp + 0x14], 0x71
mov dword [esp + 0x18], 0xe9
mov dword [esp + 0x1c], 0x200
mov edi, dword [esp + 0x88]
sub edi, esi
mov edx, dword [esp + edx*4 - 8]
mov dword [esp + 0x58], edi
cmp dword [esp + 0x48], 1
jle 0x46e74e
xor edi, edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], edi
cmp esi, dword [esp + 0x40]
jge 0x46e210
mov edi, edx
neg edi
mov dword [esp + 0xc], edi
mov edi, dword [esp + 0x48]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x5c], esi
lea edi, [edi - 1]
mov dword [esp + 0x14], edi
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x14]
jge 0x46eecb
mov edx, dword [esp + 0x60]
mov ebx, eax
sub ebx, dword [esp + 0x8c]
mov dword [esp + 0x20], ebx
add edx, eax
mov dword [esp + 0x34], edx
movzx ebp, byte [edx]
movzx esi, byte [edx + 1]
movzx ecx, word [ebp*2 + 0x620100]
movzx ebp, byte [edx + 2]
movzx edi, word [esi*2 + 0x620300]
xor ecx, edi
mov edi, dword [esp + 0x94]
movzx esi, word [ebp*2 + 0x620500]
xor ecx, esi
and ecx, dword [esp + 0x50]
mov ebp, eax
mov esi, dword [esp + 0x90]
and ebp, dword [esp + 0x64]
mov edx, dword [esi + ecx*4]
sub ebx, edx
mov dword [edi + ebp*4], edx
mov dword [esp + 0x10], edx
mov dword [esi + ecx*4], eax
mov ecx, 2
test dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x34]
jge 0x46e0a3
mov dword [esp + 0x54], eax
xor ebp, ebp
mov dword [esp + 0x34], ebx
cmp edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x58]
jl 0x46dffd
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x24], edx
add ebx, edx
and edx, dword [esp + 0x64]
mov esi, dword [esp + 0x94]
movzx edi, byte [ebx + ecx - 1]
mov edx, dword [esi + edx*4]
mov esi, dword [esp + 0x34]
movzx eax, byte [ecx + esi - 1]
movzx esi, byte [ecx + esi]
xor eax, edi
movzx edi, byte [ebx + ecx]
xor esi, edi
or eax, esi
jne 0x46e072
mov dword [esp + 0x1c], ebp
xor eax, eax
mov dword [esp + 0x18], edx
mov esi, dword [esp + 0x34]
movzx ebp, byte [eax + esi]
movzx edx, byte [eax + ebx]
cmp edx, ebp
jne 0x46e051
inc eax
cmp eax, 0x102
jl 0x46e03d
mov dword [esp + 0x34], esi
cmp ecx, eax
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
jge 0x46e072
mov ebx, dword [esp + 0x24]
mov ecx, eax
mov dword [esp + 0x10], ebx
cmp eax, 0x102
jge 0x46e087
inc ebp
mov ebx, ebp
mov eax, dword [esp + 0x20]
sub ebx, dword [esp + 0x4c]
sub eax, edx
test ebx, eax
jl 0x46dfef
mov eax, dword [esp + 0x54]
cmp ecx, 3
jne 0x46e0a3
mov edx, eax
sub edx, dword [esp + 0x10]
cmp edx, 0x1000
jle 0x46e0a3
mov ecx, 2
cmp dword [esp + 0x28], 1
jle 0x46e1d6
cmp ecx, dword [esp + 0x28]
jg 0x46e1a6
cmp dword [esp + 0x28], 2
jle 0x46e1a6
mov edx, dword [esp + 0x28]
lea ebp, [eax + 1]
lea eax, [eax + edx - 2]
cmp ebp, eax
jg 0x46e135
mov dword [esp + 0x54], eax
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x94]
mov ebx, dword [esp + 0x90]
movzx esi, byte [ebp + ecx]
movzx edi, byte [ebp + ecx + 1]
movzx eax, word [esi*2 + 0x620100]
movzx esi, word [edi*2 + 0x620300]
xor eax, esi
movzx edi, byte [ebp + ecx + 2]
movzx esi, word [edi*2 + 0x620500]
xor eax, esi
and eax, dword [esp + 0x50]
mov esi, dword [esp + 0x64]
and esi, ebp
mov edi, dword [ebx + eax*4]
mov dword [edx + esi*4], edi
mov dword [ebx + eax*4], ebp
inc ebp
cmp ebp, dword [esp + 0x54]
jle 0x46e0e8
mov dword [esp + 0x60], ecx
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0xa8]
mov esi, dword [esp + 0x44]
mov ebx, dword [esp + 0x28]
mov ebp, dword [esp + 0xa4]
mov edi, dword [esp + 0x2c]
mov word [ecx + esi*2], di
lea edx, [ebx - 3]
mov byte [esi + ebp], dl
inc esi
movzx edx, di
mov dword [esp + 0x44], esi
cmp edx, 0x101
jge 0x46e172
movzx ecx, byte [edx + 0x6207ff]
jmp 0x46e17d
dec edx
sar edx, 7
movzx ecx, byte [edx + 0x620900]
mov edx, dword [esp + 0xa0]
mov ebx, dword [esp + 0x9c]
inc word [edx + ecx*4]
mov ecx, dword [esp + 0x28]
movzx ebp, byte [ecx + 0x6206fd]
xor ecx, ecx
inc word [ebx + ebp*4 + 0x404]
jmp 0x46e1d6
mov esi, dword [esp + 0xa8]
xor ebx, ebx
mov ebp, dword [esp + 0x44]
mov edx, dword [esp + 0x30]
mov edi, dword [esp + 0xa4]
mov word [esi + ebp*2], bx
mov ebx, dword [esp + 0x9c]
mov byte [ebp + edi], dl
inc ebp
mov dword [esp + 0x44], ebp
inc word [ebx + edx*4]
mov esi, dword [esp + 0x60]
mov ebp, eax
sub ebp, dword [esp + 0x10]
mov dword [esp + 0x2c], ebp
movzx edx, byte [esi + eax]
inc eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], edx
cmp eax, dword [esp + 0x40]
jl 0x46df5f
mov edx, dword [esp + 0x4c]
mov ecx, esi
mov esi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x8c]
mov ebp, dword [esp + 0x7c]
cmp dword [esp + 0xb4], 2
jl 0x46e52a
mov edi, dword [esp + 0x40]
add edi, 0x102
mov dword [esp + 0x40], edi
cmp eax, edi
jge 0x46e52a
mov edi, edx
neg edi
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x48]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x5c], esi
lea edi, [edi - 1]
mov dword [esp + 0x20], edi
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0x20]
jge 0x46eeb6
mov esi, dword [esp + 0x60]
mov dword [esp + 0x28], edx
lea edi, [eax + esi]
mov dword [esp + 0x14], edi
mov esi, eax
movzx ebx, byte [edi]
movzx edx, byte [edi + 1]
sub esi, dword [esp + 0x8c]
movzx ecx, word [ebx*2 + 0x620100]
movzx ebx, byte [edi + 2]
movzx ebp, word [edx*2 + 0x620300]
xor ecx, ebp
mov edi, dword [esp + 0x90]
movzx edx, word [ebx*2 + 0x620500]
xor ecx, edx
and ecx, dword [esp + 0x50]
mov edx, eax
and edx, dword [esp + 0x64]
mov ebp, dword [esp + 0x94]
mov ebx, dword [edi + ecx*4]
mov dword [esp + 0xc], ebx
mov dword [ebp + edx*4], ebx
mov edx, esi
mov dword [edi + ecx*4], eax
sub edx, ebx
mov ecx, dword [esp + 0x40]
sub ecx, eax
cmp ecx, 0x102
mov ebp, dword [esp + 0x14]
jl 0x46e2e5
mov ecx, 0x102
mov dword [esp + 0x24], ecx
mov ecx, 2
test dword [esp + 0x10], edx
mov edx, dword [esp + 0x28]
jge 0x46e3cf
xor edi, edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x54], eax
mov dword [esp + 0x38], esi
mov dword [esp + 0x28], edx
cmp ebx, dword [esp + 0x5c]
mov edx, dword [esp + 0x58]
jl 0x46e31c
mov edx, dword [esp + 0x60]
add edx, ebx
mov dword [esp + 0x3c], ebx
and ebx, dword [esp + 0x64]
mov esi, dword [esp + 0x94]
movzx eax, byte [ecx + ebp - 1]
movzx edi, byte [edx + ecx - 1]
xor eax, edi
mov ebx, dword [esi + ebx*4]
movzx edi, byte [ecx + ebp]
movzx esi, byte [edx + ecx]
xor edi, esi
or eax, edi
jne 0x46e394
xor eax, eax
cmp dword [esp + 0x24], 0
jle 0x46eea9
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], ebx
mov esi, dword [esp + 0x24]
movzx ebx, byte [eax + ebp]
movzx ecx, byte [eax + edx]
cmp ecx, ebx
jne 0x46eea1
inc eax
cmp eax, esi
jl 0x46e363
mov ecx, dword [esp + 0x1c]
cmp ecx, eax
mov ebx, dword [esp + 0x18]
jge 0x46e394
mov edx, dword [esp + 0x3c]
mov ecx, eax
mov dword [esp + 0xc], edx
cmp eax, dword [esp + 0x24]
jge 0x46e3af
mov eax, dword [esp + 0x34]
inc eax
mov edx, dword [esp + 0x38]
mov dword [esp + 0x34], eax
sub edx, ebx
sub eax, dword [esp + 0x4c]
test eax, edx
jl 0x46e30e
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x28]
cmp ecx, 3
jne 0x46e3cf
mov ebx, eax
sub ebx, dword [esp + 0xc]
cmp ebx, 0x1000
jle 0x46e3cf
mov ecx, 2
cmp edx, 1
jle 0x46e4f8
cmp edx, ecx
jl 0x46e4c8
cmp edx, 2
jle 0x46e4c8
lea ebp, [eax + 1]
lea eax, [eax + edx - 2]
cmp ebp, eax
jg 0x46e45f
mov dword [esp + 0x28], edx
mov dword [esp + 0x54], eax
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x94]
mov ecx, dword [esp + 0x90]
movzx esi, byte [ebp + edx]
movzx edi, byte [ebp + edx + 1]
movzx eax, word [esi*2 + 0x620100]
movzx esi, word [edi*2 + 0x620300]
xor eax, esi
movzx edi, byte [ebp + edx + 2]
movzx esi, word [edi*2 + 0x620500]
xor eax, esi
and eax, dword [esp + 0x50]
mov esi, dword [esp + 0x64]
and esi, ebp
mov edi, dword [ecx + eax*4]
mov dword [ebx + esi*4], edi
mov dword [ecx + eax*4], ebp
inc ebp
cmp ebp, dword [esp + 0x54]
jle 0x46e40e
mov dword [esp + 0x60], edx
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0xa8]
lea ecx, [edx - 3]
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0xa4]
mov edi, dword [esp + 0x2c]
mov word [ebx + esi*2], di
mov byte [esi + ebp], cl
inc esi
movzx ecx, di
mov dword [esp + 0x44], esi
cmp ecx, 0x101
jge 0x46e498
movzx ebx, byte [ecx + 0x6207ff]
jmp 0x46e4a3
dec ecx
sar ecx, 7
movzx ebx, byte [ecx + 0x620900]
mov ecx, dword [esp + 0xa0]
inc word [ecx + ebx*4]
xor ecx, ecx
movzx ebx, byte [edx + 0x6206fd]
mov edx, dword [esp + 0x9c]
inc word [edx + ebx*4 + 0x404]
jmp 0x46e4f8
mov esi, dword [esp + 0xa8]
xor ebx, ebx
mov ebp, dword [esp + 0x44]
mov edx, dword [esp + 0x30]
mov edi, dword [esp + 0xa4]
mov word [esi + ebp*2], bx
mov ebx, dword [esp + 0x9c]
mov byte [ebp + edi], dl
inc ebp
mov dword [esp + 0x44], ebp
inc word [ebx + edx*4]
mov ebp, dword [esp + 0x60]
mov edx, eax
sub edx, dword [esp + 0xc]
mov dword [esp + 0x2c], edx
mov edx, ecx
movzx ecx, byte [ebp + eax]
inc eax
mov dword [esp + 0x30], ecx
cmp eax, dword [esp + 0x40]
jl 0x46e257
mov dword [esp + 0x28], edx
mov ecx, ebp
mov esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
cmp dword [esp + 0x28], 1
jle 0x46e65c
cmp dword [esp + 0x28], 2
jle 0x46e62d
mov ebx, dword [esp + 0x28]
lea edx, [eax + 1]
lea eax, [eax + ebx - 1]
cmp edx, eax
jge 0x46e5b6
mov dword [esp + 0x54], eax
mov dword [esp + 0x5c], esi
mov ebp, dword [esp + 0x94]
mov ebx, dword [esp + 0x90]
movzx esi, byte [edx + ecx]
movzx edi, byte [edx + ecx + 1]
movzx eax, word [esi*2 + 0x620100]
movzx esi, word [edi*2 + 0x620300]
xor eax, esi
movzx edi, byte [edx + ecx + 2]
movzx esi, word [edi*2 + 0x620500]
xor eax, esi
and eax, dword [esp + 0x50]
mov esi, dword [esp + 0x64]
and esi, edx
mov edi, dword [ebx + eax*4]
mov dword [ebp + esi*4], edi
mov dword [ebx + eax*4], edx
inc edx
cmp edx, dword [esp + 0x54]
jl 0x46e565
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
mov edi, dword [esp + 0xa8]
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x54], eax
mov word [edi + ebx*2], dx
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0xa4]
movzx edx, dx
lea eax, [eax - 3]
mov byte [edi + ebx], al
inc ebx
mov dword [esp + 0x44], ebx
cmp edx, 0x101
mov eax, dword [esp + 0x54]
jge 0x46e5fb
movzx ebx, byte [edx + 0x6207ff]
jmp 0x46e606
dec edx
sar edx, 7
movzx ebx, byte [edx + 0x620900]
mov edx, dword [esp + 0xa0]
mov edi, dword [esp + 0x9c]
inc word [edx + ebx*4]
mov ebx, dword [esp + 0x28]
movzx edx, byte [ebx + 0x6206fd]
inc word [edi + edx*4 + 0x404]
jmp 0x46e65c
mov edx, dword [esp + 0xa8]
xor edi, edi
mov ebx, dword [esp + 0x44]
mov word [edx + ebx*2], di
mov edi, dword [esp + 0xa4]
mov edx, dword [esp + 0x30]
mov byte [edi + ebx], dl
inc ebx
mov edi, dword [esp + 0x9c]
mov dword [esp + 0x44], ebx
inc word [edi + edx*4]
cmp dword [esp + 0xb4], 2
jl 0x46edd1
mov edx, dword [esp + 0x40]
add edx, 2
mov dword [esp + 0x40], edx
cmp eax, edx
jge 0x46edd1
mov edx, dword [esp + 0x64]
not edx
mov dword [esp + 0xc], edx
mov dword [esp + 0x5c], esi
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x48]
jge 0x46edc5
mov esi, dword [esp + 0xa8]
xor ebp, ebp
mov edi, dword [esp + 0xa4]
mov word [esi + edx*2], bp
lea esi, [eax + 2]
movzx ebx, byte [eax + ecx]
mov byte [edx + edi], bl
movzx ebp, byte [eax + ecx]
mov ebx, dword [esp + 0x9c]
inc word [ebx + ebp*4]
mov ebx, eax
and ebx, dword [esp + 0x64]
cmp esi, dword [esp + 0x40]
jl 0x46e6ef
mov ebp, dword [esp + 0x94]
cmp eax, dword [ebp + ebx*4]
jg 0x46e73d
mov esi, dword [esp + 0x94]
mov ebp, dword [esp + 0xc]
mov dword [esi + ebx*4], ebp
jmp 0x46e73d
movzx ebp, byte [eax + ecx]
movzx esi, byte [eax + ecx + 1]
mov dword [esp + 0x44], edx
movzx edx, word [ebp*2 + 0x620100]
movzx ebp, byte [eax + ecx + 2]
movzx edi, word [esi*2 + 0x620300]
xor edx, edi
movzx esi, word [ebp*2 + 0x620500]
xor edx, esi
and edx, dword [esp + 0x50]
mov esi, dword [esp + 0x90]
mov ebp, dword [esp + 0x94]
mov edi, dword [esi + edx*4]
mov dword [ebp + ebx*4], edi
mov dword [esi + edx*4], eax
mov edx, dword [esp + 0x44]
inc eax
inc edx
cmp eax, dword [esp + 0x40]
jl 0x46e68f
jmp 0x46edc5
mov dword [esp + 0x44], 0
cmp esi, dword [esp + 0x40]
jge 0x46e9fb
mov edi, edx
neg edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x4c], edx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x44]
cmp ebx, dword [esp + 0x48]
jge 0x46e9e0
mov esi, dword [esp + 0x60]
mov edx, eax
mov dword [esp + 0x44], ebx
sub edx, dword [esp + 0x8c]
mov dword [esp + 0x28], edx
add esi, eax
movzx ecx, byte [esi]
movzx ebx, byte [esi + 1]
mov dword [esp + 0x2c], esi
movzx ebp, word [ecx*2 + 0x620100]
movzx ecx, byte [esi + 2]
movzx edi, word [ebx*2 + 0x620300]
xor ebp, edi
mov edi, dword [esp + 0x94]
movzx ebx, word [ecx*2 + 0x620500]
xor ebp, ebx
and ebp, dword [esp + 0x50]
mov ecx, eax
mov ebx, dword [esp + 0x90]
and ecx, dword [esp + 0x64]
mov esi, dword [ebx + ebp*4]
sub edx, esi
mov dword [esp + 0x20], esi
mov dword [edi + ecx*4], esi
mov dword [ebx + ebp*4], eax
mov ebp, 2
mov ecx, esi
mov ebx, dword [esp + 0x44]
test dword [esp + 0x18], edx
jl 0x46e80e
mov ebp, dword [esp + 0x60]
movzx edx, byte [ebp + eax]
mov dword [esp + 0x1c], edx
jmp 0x46e9ad
mov dword [esp + 0x54], eax
xor edx, edx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x44], ebx
cmp esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
jl 0x46e82a
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x30], esi
add ecx, esi
and esi, dword [esp + 0x64]
mov ebx, dword [esp + 0x94]
movzx edi, byte [ecx + ebp - 1]
mov esi, dword [ebx + esi*4]
mov ebx, dword [esp + 0x2c]
movzx eax, byte [ebx + ebp - 1]
movzx ebx, byte [ebx + ebp]
xor eax, edi
movzx edi, byte [ecx + ebp]
xor ebx, edi
or eax, ebx
jne 0x46e897
mov dword [esp + 0x24], esi
xor eax, eax
mov edi, dword [esp + 0x2c]
movzx esi, byte [eax + edi]
movzx ebx, byte [eax + ecx]
cmp ebx, esi
jne 0x46e87a
inc eax
cmp eax, 0x102
jl 0x46e866
mov esi, dword [esp + 0x24]
cmp ebp, eax
jge 0x46e897
mov ecx, dword [esp + 0x30]
mov ebp, eax
mov dword [esp + 0x20], ecx
cmp eax, 0x102
jge 0x46eee7
inc edx
mov ecx, edx
mov eax, dword [esp + 0x28]
sub ecx, dword [esp + 0x4c]
sub eax, esi
test ecx, eax
jl 0x46e81c
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x60]
cmp ebp, 3
movzx edx, byte [esi + eax]
mov dword [esp + 0x1c], edx
jle 0x46e9a7
neg ecx
add ecx, eax
movzx esi, cx
lea edx, [ebp - 3]
mov dword [esp + 0x1c], edx
movzx edx, dl
movzx edx, byte [edx + 0x620700]
add edx, 0x101
cmp esi, 0x101
jge 0x46e900
movzx ecx, byte [esi + 0x6207ff]
mov dword [esp + 0x14], ecx
jmp 0x46e911
lea ecx, [esi - 1]
sar ecx, 7
movzx edi, byte [ecx + 0x620900]
mov dword [esp + 0x14], edi
mov ecx, dword [esp + 0xa0]
mov edi, dword [esp + 0x14]
inc word [ecx + edi*4]
lea ecx, [eax + 1]
lea eax, [eax + ebp - 1]
cmp ecx, eax
jg 0x46e9af
mov dword [esp + 0xc], edx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x54], eax
mov dword [esp + 0x10], esi
mov ebp, dword [esp + 0x60]
mov ebx, dword [esp + 0x94]
mov edx, dword [esp + 0x90]
movzx esi, byte [ecx + ebp]
movzx edi, byte [ecx + ebp + 1]
movzx eax, word [esi*2 + 0x620100]
movzx esi, word [edi*2 + 0x620300]
xor eax, esi
movzx edi, byte [ecx + ebp + 2]
movzx esi, word [edi*2 + 0x620500]
xor eax, esi
and eax, dword [esp + 0x50]
mov esi, dword [esp + 0x64]
and esi, ecx
mov edi, dword [edx + eax*4]
mov dword [ebx + esi*4], edi
mov dword [edx + eax*4], ecx
inc ecx
cmp ecx, dword [esp + 0x54]
jle 0x46e951
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x44]
jmp 0x46e9af
je 0x46ef3c
xor esi, esi
mov ebp, dword [esp + 0xa8]
inc eax
mov edi, dword [esp + 0x9c]
mov ecx, dword [esp + 0x1c]
mov word [ebp + ebx*2], si
mov esi, dword [esp + 0xa4]
mov byte [ebx + esi], cl
inc ebx
inc word [edi + edx*4]
cmp eax, dword [esp + 0x40]
jl 0x46e778
mov dword [esp + 0x44], ebx
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x8c]
mov ebp, dword [esp + 0x7c]
cmp dword [esp + 0xb4], 2
jl 0x46edd1
mov edi, dword [esp + 0x40]
lea edi, [edi + 0x102]
mov dword [esp + 0x18], edi
cmp eax, edi
jge 0x46ece3
mov edi, edx
neg edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x4c], edx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x44]
cmp ebx, dword [esp + 0x48]
jge 0x46ef2b
mov esi, dword [esp + 0x60]
mov edx, eax
mov dword [esp + 0x44], ebx
sub edx, dword [esp + 0x8c]
mov dword [esp + 0x34], edx
add esi, eax
movzx ecx, byte [esi]
movzx ebx, byte [esi + 1]
mov dword [esp + 0x38], esi
movzx ebp, word [ecx*2 + 0x620100]
movzx ecx, byte [esi + 2]
movzx edi, word [ebx*2 + 0x620300]
xor ebp, edi
mov edi, dword [esp + 0x94]
movzx ebx, word [ecx*2 + 0x620500]
xor ebp, ebx
and ebp, dword [esp + 0x50]
mov ecx, eax
mov ebx, dword [esp + 0x90]
and ecx, dword [esp + 0x64]
mov esi, dword [ebx + ebp*4]
sub edx, esi
mov dword [edi + ecx*4], esi
mov dword [ebx + ebp*4], eax
mov ebp, dword [esp + 0x40]
sub ebp, eax
add ebp, 0x102
cmp ebp, 0x102
mov dword [esp + 0x24], esi
jl 0x46eac3
mov ebp, 0x102
mov dword [esp + 0x30], ebp
mov ebp, 2
mov ecx, esi
mov ebx, dword [esp + 0x44]
test dword [esp + 0x1c], edx
jl 0x46eaea
mov ebp, dword [esp + 0x60]
movzx edx, byte [ebp + eax]
mov dword [esp + 0x20], edx
jmp 0x46eca0
mov dword [esp + 0x54], eax
xor edx, edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x44], ebx
cmp esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
jl 0x46eb06
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x3c], esi
add ecx, esi
and esi, dword [esp + 0x64]
mov ebx, dword [esp + 0x94]
movzx edi, byte [ecx + ebp - 1]
mov esi, dword [ebx + esi*4]
mov ebx, dword [esp + 0x38]
movzx eax, byte [ebx + ebp - 1]
movzx ebx, byte [ebx + ebp]
xor eax, edi
movzx edi, byte [ecx + ebp]
xor ebx, edi
or eax, ebx
jne 0x46eb8a
xor eax, eax
cmp dword [esp + 0x30], 0
jle 0x46ef09
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], ebp
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x38]
movzx ebp, byte [eax + edi]
movzx ebx, byte [eax + ecx]
cmp ebx, ebp
jne 0x46ef01
inc eax
cmp eax, esi
jl 0x46eb55
mov ebp, dword [esp + 0x2c]
cmp ebp, eax
mov esi, dword [esp + 0x28]
jge 0x46eb8a
mov ecx, dword [esp + 0x3c]
mov ebp, eax
mov dword [esp + 0x24], ecx
cmp eax, dword [esp + 0x30]
jge 0x46eef4
inc edx
mov ecx, edx
mov eax, dword [esp + 0x34]
sub ecx, dword [esp + 0x4c]
sub eax, esi
test ecx, eax
jl 0x46eaf8
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x60]
cmp ebp, 3
movzx edx, byte [esi + eax]
mov dword [esp + 0x20], edx
jle 0x46ec9a
neg ecx
add ecx, eax
movzx esi, cx
lea edx, [ebp - 3]
mov dword [esp + 0x20], edx
movzx edx, dl
movzx edx, byte [edx + 0x620700]
add edx, 0x101
cmp esi, 0x101
jge 0x46ebf3
movzx ecx, byte [esi + 0x6207ff]
mov dword [esp + 0x14], ecx
jmp 0x46ec04
lea ecx, [esi - 1]
sar ecx, 7
movzx edi, byte [ecx + 0x620900]
mov dword [esp + 0x14], edi
mov ecx, dword [esp + 0xa0]
mov edi, dword [esp + 0x14]
inc word [ecx + edi*4]
lea ecx, [eax + 1]
lea eax, [eax + ebp - 1]
cmp ecx, eax
jg 0x46eca2
mov dword [esp + 0xc], edx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x54], eax
mov dword [esp + 0x10], esi
mov ebp, dword [esp + 0x60]
mov ebx, dword [esp + 0x94]
mov edx, dword [esp + 0x90]
movzx esi, byte [ecx + ebp]
movzx edi, byte [ecx + ebp + 1]
movzx eax, word [esi*2 + 0x620100]
movzx esi, word [edi*2 + 0x620300]
xor eax, esi
movzx edi, byte [ecx + ebp + 2]
movzx esi, word [edi*2 + 0x620500]
xor eax, esi
and eax, dword [esp + 0x50]
mov esi, dword [esp + 0x64]
and esi, ecx
mov edi, dword [edx + eax*4]
mov dword [ebx + esi*4], edi
mov dword [edx + eax*4], ecx
inc ecx
cmp ecx, dword [esp + 0x54]
jle 0x46ec44
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x44]
jmp 0x46eca2
je 0x46ef16
xor esi, esi
mov ebp, dword [esp + 0xa8]
inc eax
mov edi, dword [esp + 0x9c]
mov ecx, dword [esp + 0x20]
mov word [ebp + ebx*2], si
mov esi, dword [esp + 0xa4]
mov byte [ebx + esi], cl
inc ebx
inc word [edi + edx*4]
cmp eax, dword [esp + 0x18]
jl 0x46ea37
mov dword [esp + 0x44], ebx
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
mov edx, dword [esp + 0x40]
add edx, 0x104
mov dword [esp + 0x40], edx
cmp eax, edx
jge 0x46edd1
mov edx, dword [esp + 0x64]
not edx
mov dword [esp + 0xc], edx
mov dword [esp + 0x5c], esi
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x48]
jge 0x46edc5
mov esi, dword [esp + 0xa8]
xor ebp, ebp
mov edi, dword [esp + 0xa4]
mov word [esi + edx*2], bp
lea esi, [eax + 2]
movzx ebx, byte [eax + ecx]
mov byte [edx + edi], bl
movzx ebp, byte [eax + ecx]
mov ebx, dword [esp + 0x9c]
inc word [ebx + ebp*4]
mov ebx, eax
and ebx, dword [esp + 0x64]
cmp esi, dword [esp + 0x40]
jl 0x46ed6b
mov ebp, dword [esp + 0x94]
cmp eax, dword [ebp + ebx*4]
jg 0x46edb9
mov esi, dword [esp + 0x94]
mov ebp, dword [esp + 0xc]
mov dword [esi + ebx*4], ebp
jmp 0x46edb9
movzx ebp, byte [eax + ecx]
movzx esi, byte [eax + ecx + 1]
mov dword [esp + 0x44], edx
movzx edx, word [ebp*2 + 0x620100]
movzx ebp, byte [eax + ecx + 2]
movzx edi, word [esi*2 + 0x620300]
xor edx, edi
movzx esi, word [ebp*2 + 0x620500]
xor edx, esi
and edx, dword [esp + 0x50]
mov esi, dword [esp + 0x90]
mov ebp, dword [esp + 0x94]
mov edi, dword [esi + edx*4]
mov dword [ebp + ebx*4], edi
mov dword [esi + edx*4], eax
mov edx, dword [esp + 0x44]
inc eax
inc edx
cmp eax, dword [esp + 0x40]
jl 0x46ed0b
mov dword [esp + 0x44], edx
mov esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
mov edx, eax
mov ecx, dword [esp + 0x80]
sub edx, esi
mov ebx, dword [esp + 0x84]
sub esi, eax
add dword [ebp], edx
mov ebp, dword [esp + 0xac]
add dword [ecx], esi
mov dword [ebx], eax
mov eax, dword [esp + 0x44]
sub dword [ebp], eax
xor eax, eax
add esp, 0x68
pop ebp
pop ebx
pop edi
pop esi
ret 0x3c
mov eax, 0xfffffffa
add esp, 0x68
pop ebp
pop ebx
pop edi
pop esi
ret 0x3c
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x14], 3
jge 0x46d4fb
xor ebx, ebx
jmp 0x46d597
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x44]
jmp 0x46d9ca
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x44]
jmp 0x46dcba
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
cmp ebx, eax
jl 0x46dc85
jmp 0x46dc99
neg ecx
add ecx, eax
cmp ecx, 0x1000
jle 0x46dcd3
jmp 0x46ddaf
mov dword [esp + 0x44], ebp
mov esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
jmp 0x46edd1
neg ecx
add ecx, eax
cmp ecx, 0x1000
jle 0x46d9e3
jmp 0x46dabf
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
cmp ecx, eax
jl 0x46e384
jmp 0x46e394
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
jmp 0x46e52a
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x8c]
mov ebp, dword [esp + 0x7c]
jmp 0x46e210
mov eax, dword [esp + 0x54]
mov ebx, dword [esp + 0x44]
jmp 0x46e8b8
mov eax, dword [esp + 0x54]
mov ebx, dword [esp + 0x44]
jmp 0x46ebab
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
cmp ebp, eax
jl 0x46eb76
jmp 0x46eb8a
neg ecx
add ecx, eax
cmp ecx, 0x1000
jle 0x46ebc4
jmp 0x46eca0
mov dword [esp + 0x44], ebx
mov esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
jmp 0x46edd1
neg ecx
add ecx, eax
cmp ecx, 0x1000
jle 0x46e8d1
jmp 0x46e9ad
mov eax, 0xfffffff8
add esp, 0x68
pop ebp
pop ebx
pop edi
pop esi
ret 0x3c