Function at 0x466d20
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0x84
cmp dword [esp + 0x98], 0
je 0x467f70
cmp dword [esp + 0xa0], 0
je 0x467f70
cmp dword [esp + 0x9c], 0
je 0x467f70
cmp dword [esp + 0xa4], 0
je 0x467f70
mov eax, dword [esp + 0xa0]
mov edx, dword [eax]
test edx, edx
mov dword [esp + 0x80], edx
je 0x467f70
cmp dword [esp + 0xac], 0
je 0x467f70
mov eax, dword [esp + 0xa4]
mov edx, dword [eax]
test edx, edx
mov dword [esp + 0x7c], edx
jl 0x467f5e
mov eax, dword [esp + 0x9c]
mov edx, dword [eax]
test edx, edx
mov dword [esp + 0xc], edx
jl 0x467f5e
mov eax, dword [esp + 0xac]
neg edx
mov edi, dword [eax + 0x38]
add edx, 0x7fffffff
mov ebp, dword [eax + 0x30]
mov esi, dword [eax + 0x2c]
mov dword [esp + 0x70], edi
mov edi, dword [eax + 0x18]
cmp edi, edx
mov dword [esp + 0x74], ebp
mov dword [esp + 0x78], esi
mov ebp, dword [eax + 0x40]
mov esi, dword [eax + 0x3c]
jg 0x466de7
xor ebx, ebx
jmp 0x466e2a
mov ecx, dword [esp + 0xac]
mov eax, edi
and eax, 0xffff8000
and edi, 0x7fff
mov edx, dword [esp + 0x74]
xor ebx, ebx
add edx, eax
mov dword [esp + 0x74], edx
mov dword [ecx + 0x30], edx
mov dword [ecx + 0x18], edi
sub dword [esi + ebx*4], eax
sub dword [ebp + ebx*4], eax
inc ebx
cmp ebx, 0x8000
jl 0x466e0d
mov eax, dword [esp + 0x9c]
mov ecx, dword [eax]
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xa8]
lea edx, [edi + eax]
mov dword [esp + 0x6c], edx
lea edx, [edi + eax - 2]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0xac]
mov dword [edx], eax
mov eax, dword [esp + 0xa4]
mov dword [edx + 0xec], ecx
cmp dword [eax], 0
je 0x467790
mov eax, dword [esp + 0x9c]
cmp dword [eax], 0
jne 0x466e7e
xor eax, eax
add esp, 0x84
pop ebp
pop ebx
pop edi
pop esi
ret 0x18
mov ecx, dword [esp + 0xac]
mov eax, dword [esp + 0x98]
mov dword [ecx + 0xa0], 0
mov eax, dword [eax]
mov ecx, eax
sub ecx, edi
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x64], eax
lea edx, [edi + ecx]
mov ecx, dword [esp + 0x6c]
sub ecx, edi
cmp ecx, 0x102
mov dword [esp + 0x5c], ecx
jl 0x466ec2
mov ecx, 0x102
mov dword [esp + 0x68], edx
call fcn.00467fc0
cmp dword [esp + 0xa8], 2
je 0x46781d
mov eax, dword [esp + 0xac]
cmp dword [eax + 0xec], 2
je 0x46781d
mov eax, dword [esp + 0xac]
mov eax, dword [eax + 0x14]
test eax, eax
je 0x4674a5
cmp eax, 1
jne 0x46711c
mov dword [esp + 0x58], 0
mov ebx, edi
cmp edi, dword [esp + 0x1c]
jge 0x4675ba
mov dword [esp + 0x48], edi
mov dword [esp + 0x54], esi
mov dword [esp + 0x4c], ebp
mov eax, dword [esp + 0x58]
cmp eax, dword [esp + 0x7c]
jge 0x4677b7
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x70]
mov edx, dword [esp + 0x4c]
lea ebp, [ecx + ebx]
mov dword [esp + 0x18], ebp
movzx ecx, byte [ebp]
mov dword [esp + 0xc], ecx
movsx edi, word [esi + ecx*2]
movzx ecx, byte [ebp + 1]
movsx ecx, word [esi + ecx*2 + 0x200]
xor edi, ecx
movzx ecx, byte [ebp + 2]
mov ebp, dword [esp + 0x54]
movsx ecx, word [esi + ecx*2 + 0x400]
xor edi, ecx
mov ecx, dword [esp + 0x6c]
mov esi, ebx
sub ecx, ebx
and esi, 0x7fff
add ecx, 0xfffffffe
cmp ecx, 0x102
jl 0x466f93
mov ecx, 0x102
mov dword [esp + 0x14], ecx
mov ecx, dword [edx + edi*4]
mov dword [ebp + esi*4], ecx
mov ebp, ebx
sub ebp, ecx
mov dword [esp + 0x10], ecx
cmp ebp, 0x8000
mov dword [edx + edi*4], ebx
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
jge 0x4670f1
cmp dword [esp + 0x14], 2
jle 0x4670f1
mov dword [esp + 0x10], edi
xor ebp, ebp
mov dword [esp + 0x50], ebx
mov esi, 2
mov dword [esp + 0x58], eax
mov dword [esp + 0xc], edx
mov ebx, ecx
mov edi, dword [esp + 0x18]
cmp ebx, dword [esp + 0x48]
mov edx, dword [esp + 0x74]
jl 0x466ff3
mov edx, dword [esp + 0x60]
add edx, ebx
movzx eax, byte [esi + edi - 1]
movzx ecx, byte [edx + esi - 1]
cmp eax, ecx
jne 0x467026
movzx eax, byte [esi + edi]
movzx ecx, byte [edx + esi]
cmp eax, ecx
jne 0x467026
mov eax, edi
mov ecx, dword [esp + 0x14]
call fcn.00467f90
cmp esi, eax
jge 0x467020
mov esi, eax
jge 0x467026
mov dword [esp + 0x10], ebx
and ebx, 0x7fff
inc ebp
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
mov ebx, dword [eax + ebx*4]
sub edx, ebx
cmp edx, 0x8000
jge 0x4677a2
cmp esi, dword [esp + 0x14]
jge 0x4677a2
cmp ebp, 0x10
jl 0x466fe5
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x50]
cmp esi, 3
jl 0x4670f1
neg edi
lea ecx, [ebx + 1]
add edi, ebx
lea ebx, [ebx + esi - 1]
mov edx, esi
cmp ecx, ebx
jg 0x4670f3
mov dword [esp + 0xc], edx
mov dword [esp + 0x58], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0x50], ebx
mov edx, dword [esp + 0x60]
movzx ebp, byte [ecx + edx]
mov ebx, dword [esp + 0x70]
movzx esi, byte [ecx + edx + 1]
movsx eax, word [ebx + ebp*2]
movzx ebp, byte [ecx + edx + 2]
movsx edi, word [ebx + esi*2 + 0x200]
xor eax, edi
mov edi, dword [esp + 0x54]
movsx ebx, word [ebx + ebp*2 + 0x400]
xor eax, ebx
mov ebx, ecx
mov ebp, dword [esp + 0x4c]
and ebx, 0x7fff
mov esi, dword [ebp + eax*4]
mov dword [edi + ebx*4], esi
mov dword [ebp + eax*4], ecx
inc ecx
cmp ecx, dword [esp + 0x50]
jle 0x467093
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x50]
jmp 0x4670f3
xor edi, edi
mov ecx, dword [esp + 0x80]
inc ebx
mov word [ecx + eax*4], dx
mov word [ecx + eax*4 + 2], di
inc eax
cmp ebx, dword [esp + 0x1c]
jl 0x466f2c
mov dword [esp + 0x58], eax
mov edi, dword [esp + 0x48]
jmp 0x4675ba
mov dword [esp + 0x58], 0
cmp eax, 2
jne 0x4675ba
mov eax, dword [esp + 0xc]
mov ebx, edi
mov dword [esp + 0x58], 0
lea edx, [edi + eax - 3]
cmp edi, edx
jge 0x4675ba
xor ecx, ecx
mov eax, 1
mov dword [esp + 0x28], ecx
mov dword [esp + 0x54], esi
mov dword [esp + 0x48], edi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x4c], ebp
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x58]
cmp ecx, dword [esp + 0x7c]
jge 0x467807
mov edi, dword [esp + 0x60]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x70]
mov edx, dword [esp + 0x4c]
lea ebp, [edi + ebx]
movzx ecx, byte [ebp]
movzx edi, byte [ebp + 1]
mov dword [esp + 0x3c], ebp
movzx ebp, byte [ebp + 2]
mov dword [esp + 0x20], ecx
movsx ecx, word [esi + ecx*2]
movsx edi, word [esi + edi*2 + 0x200]
xor ecx, edi
movsx ebp, word [esi + ebp*2 + 0x400]
xor ecx, ebp
mov edi, ebx
and edi, 0x7fff
mov esi, dword [esp + 0x54]
mov ebp, dword [edx + ecx*4]
mov dword [esp + 0x34], ebp
mov dword [esi + edi*4], ebp
mov dword [edx + ecx*4], ebx
movzx ecx, ax
mov ebp, dword [esp + 0x3c]
test ecx, ecx
mov esi, dword [esp + 0x28]
je 0x46729b
mov edx, dword [esp + 0x1c]
mov ecx, ebx
sub edx, ebx
cmp edx, 0x102
mov eax, dword [esp + 0x34]
jl 0x4671fc
mov edx, 0x102
sub ecx, eax
mov dword [esp + 0x24], eax
cmp ecx, 0x8000
jge 0x4677cb
mov esi, 2
cmp edx, 2
jle 0x4677c4
mov dword [esp + 0x50], ebx
xor edi, edi
mov dword [esp + 0x18], edx
mov ebx, dword [esp + 0x34]
cmp ebx, dword [esp + 0x48]
mov edx, dword [esp + 0x74]
jl 0x467238
mov edx, dword [esp + 0x60]
add edx, ebx
movzx eax, byte [esi + ebp - 1]
movzx ecx, byte [edx + esi - 1]
cmp eax, ecx
jne 0x46726b
movzx eax, byte [esi + ebp]
movzx ecx, byte [edx + esi]
cmp eax, ecx
jne 0x46726b
mov eax, ebp
mov ecx, dword [esp + 0x18]
call fcn.00467f90
cmp esi, eax
jge 0x467265
mov esi, eax
jge 0x46726b
mov dword [esp + 0x24], ebx
and ebx, 0x7fff
inc edi
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
mov ebx, dword [eax + ebx*4]
sub edx, ebx
cmp edx, 0x8000
jge 0x467295
cmp esi, dword [esp + 0x18]
jge 0x467295
cmp edi, 0x200
jl 0x46722a
mov ebx, dword [esp + 0x50]
xor eax, eax
mov edi, dword [esp + 0x60]
mov ecx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x70]
lea edi, [edi + ebx + 1]
inc ebx
sub ecx, ebx
cmp ecx, 0x102
movzx edx, byte [edi + 1]
jl 0x4672bf
mov ecx, 0x102
mov dword [esp + 0x38], ecx
movzx ecx, byte [edi]
movsx edx, word [ebp + edx*2 + 0x200]
mov dword [esp + 0x2c], ebx
movsx ecx, word [ebp + ecx*2]
xor ecx, edx
movzx edx, byte [edi + 2]
movsx ebp, word [ebp + edx*2 + 0x400]
xor ecx, ebp
mov ebp, dword [esp + 0x4c]
mov ecx, dword [ebp + ecx*4]
mov ebp, ebx
sub ebp, ecx
mov dword [esp + 0x30], ecx
cmp ebp, 0x8000
jge 0x4677fd
mov ebp, 2
cmp dword [esp + 0x38], 2
jle 0x4673b7
mov dword [esp + 0xc], 0
mov dword [esp + 0x28], esi
mov dword [esp + 0x50], ebx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x30]
cmp esi, dword [esp + 0x48]
mov edx, dword [esp + 0x74]
jl 0x467341
mov edx, dword [esp + 0x60]
add edx, esi
movzx eax, byte [ebp + edi - 1]
movzx ecx, byte [edx + ebp - 1]
cmp eax, ecx
jne 0x467375
movzx eax, byte [ebp + edi]
movzx ecx, byte [edx + ebp]
cmp eax, ecx
jne 0x467375
mov eax, edi
mov ecx, dword [esp + 0x38]
call fcn.00467f90
cmp ebp, eax
jge 0x46736f
mov ebp, eax
jge 0x467375
mov dword [esp + 0x14], esi
and esi, 0x7fff
inc ebx
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
mov esi, dword [eax + esi*4]
sub edx, esi
cmp edx, 0x8000
jge 0x4677e8
cmp ebp, dword [esp + 0x38]
jge 0x4677e8
cmp ebx, 0x200
jl 0x467333
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x50]
mov edi, ebx
sub edi, dword [esp + 0x24]
dec edi
cmp esi, ebp
jl 0x46746e
cmp esi, 3
jle 0x467468
mov ebp, ebx
lea ebx, [ebx + esi - 1]
mov dword [esp + 0x20], esi
mov eax, edi
cmp ebx, dword [esp + 0x2c]
jle 0x467474
mov edi, dword [esp + 0x60]
neg ebp
mov edx, dword [esp + 0x2c]
add ebp, ebx
mov dword [esp + 0x40], ebp
xor ecx, ecx
mov dword [esp + 0x28], esi
mov ebp, edx
mov dword [esp + 0x10], eax
add edi, edx
mov dword [esp + 0x44], edi
mov dword [esp + 0x50], ebx
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x70]
movzx esi, byte [ecx + edx]
movzx edi, byte [ecx + edx + 1]
movzx edx, byte [ecx + edx + 2]
inc ecx
movsx eax, word [ebx + esi*2]
movsx esi, word [ebx + edi*2 + 0x200]
xor eax, esi
movsx ebx, word [ebx + edx*2 + 0x400]
xor eax, ebx
mov esi, ebp
mov ebx, dword [esp + 0x4c]
and esi, 0x7fff
mov edx, dword [esp + 0x54]
mov edi, dword [ebx + eax*4]
mov dword [edx + esi*4], edi
mov dword [ebx + eax*4], ebp
inc ebp
cmp ecx, dword [esp + 0x40]
jb 0x46740b
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x50]
jmp 0x467474
je 0x4677d7
mov dword [esp + 0x24], ecx
mov esi, ebp
mov ebp, dword [esp + 0x80]
mov edi, dword [esp + 0x58]
mov ecx, dword [esp + 0x20]
mov word [ebp + edi*4], cx
mov word [ebp + edi*4 + 2], ax
inc edi
mov dword [esp + 0x58], edi
cmp ebx, dword [esp + 0x1c]
jl 0x46716a
mov edi, dword [esp + 0x48]
jmp 0x4675ba
lea eax, [edi - 2]
cmp eax, dword [esp + 0x6c]
jge 0x4674c5
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x64]
movzx esi, byte [esi + edi]
shl esi, 5
movzx edx, byte [eax + 1]
xor esi, edx
jmp 0x4674c7
xor esi, esi
mov dword [esp + 0x58], 0
mov ebx, edi
cmp edi, dword [esp + 0x1c]
jge 0x4675ba
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x48], edi
mov ebp, dword [esp + 0x58]
cmp ebp, dword [esp + 0x7c]
jge 0x467810
mov eax, dword [esp + 0x60]
shl esi, 5
mov edi, dword [esp + 0x4c]
add eax, ebx
movzx ecx, byte [eax + 2]
xor esi, ecx
and esi, 0x7fff
mov edx, dword [edi + esi*4]
mov dword [edi + esi*4], ebx
mov edi, ebx
sub edi, edx
movzx ecx, byte [eax]
cmp edi, 0x8000
mov dword [esp + 0xc], ecx
jge 0x467590
cmp edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x74]
jl 0x467531
mov ecx, dword [esp + 0x60]
add edx, ecx
mov ecx, dword [esp + 0x6c]
sub ecx, ebx
add ecx, 0xfffffffe
cmp ecx, 0x102
jl 0x467549
mov ecx, 0x102
call fcn.00467f90
cmp eax, 3
jl 0x467590
mov dword [esp + 0xc], eax
lea ecx, [ebx + 1]
lea ebx, [ebx + eax - 1]
cmp ecx, ebx
jg 0x467592
mov dword [esp + 0x58], ebp
mov ebp, dword [esp + 0x60]
mov edx, dword [esp + 0x4c]
shl esi, 5
movzx eax, byte [ecx + ebp + 2]
xor esi, eax
and esi, 0x7fff
mov dword [edx + esi*4], ecx
inc ecx
cmp ecx, ebx
jle 0x46756e
mov dword [esp + 0x4c], edx
mov ebp, dword [esp + 0x58]
jmp 0x467592
xor edi, edi
mov ecx, dword [esp + 0x80]
inc ebx
mov eax, dword [esp + 0xc]
mov word [ecx + ebp*4], ax
mov word [ecx + ebp*4 + 2], di
inc ebp
cmp ebx, dword [esp + 0x1c]
jl 0x4674e7
mov dword [esp + 0x58], ebp
mov edi, dword [esp + 0x48]
cmp ebx, dword [esp + 0x6c]
jge 0x4675fc
mov dword [esp + 0x48], edi
mov ebp, dword [esp + 0x60]
mov edi, dword [esp + 0x58]
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x80]
cmp edi, eax
jge 0x4675f4
movzx edx, byte [ebx + ebp]
inc ebx
mov word [esi + edi*4], dx
xor edx, edx
mov word [esi + edi*4 + 2], dx
inc edi
cmp ebx, ecx
jl 0x4675db
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x48]
mov ebp, ebx
sub ebp, edi
cmp ebp, 0x8000
jge 0x4676b3
mov esi, dword [esp + 0x74]
cmp ebp, 0x102
mov edx, dword [esp + 0x78]
mov eax, ebp
jle 0x467623
mov eax, 0x102
mov ecx, ebp
add esi, ebx
sub ecx, eax
lea edx, [edx + 0xfefe]
cmp esi, edx
jbe 0x467691
mov esi, ecx
neg esi
add esi, 0x8000
add dword [esp + 0x68], ebp
test esi, esi
jle 0x467677
mov dword [esp + 0x10], ebp
xor edx, edx
mov dword [esp + 0x50], ebx
mov dword [esp + 0xc], eax
mov ebx, dword [esp + 0x68]
mov ebp, dword [esp + 0x78]
movzx eax, byte [edx + ebx - 0x8000]
mov byte [edx + ebp], al
inc edx
cmp edx, esi
jl 0x46765b
mov eax, dword [esp + 0xc]
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x78]
sub esi, ebx
mov ebx, dword [esp + 0xac]
lea edx, [esi + 0x8000]
mov dword [esp + 0x74], edx
mov dword [ebx + 0x30], edx
add edi, eax
add dword [esp + 0x64], eax
add edi, dword [esp + 0x74]
test ecx, ecx
jle 0x4676ea
mov ebx, dword [esp + 0x64]
xor edx, edx
movzx eax, byte [edx + ebx]
mov byte [edx + edi], al
inc edx
cmp edx, ecx
jl 0x4676a5
jmp 0x4676ea
add dword [esp + 0x60], ebx
xor ecx, ecx
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x78]
movzx eax, byte [ecx + esi - 0x8000]
mov byte [ecx + edi], al
inc ecx
cmp ecx, 0x8000
jl 0x4676c1
mov edx, dword [esp + 0xac]
mov eax, dword [esp + 0x78]
sub eax, ebx
add eax, 0x8000
mov dword [edx + 0x30], eax
mov eax, dword [esp + 0xac]
mov eax, dword [eax + 0x10]
cmp eax, 1
jne 0x467715
mov eax, dword [esp + 0xac]
lea edx, [eax + 0xc]
push edx
push ebp
mov ecx, dword [esp + 0xa0]
push dword [ecx]
call fcn.00472470
jmp 0x467738
cmp eax, 2
jne 0x467736
mov eax, dword [esp + 0xac]
lea edx, [eax + 0xc]
push edx
push ebp
mov ecx, dword [esp + 0xa0]
push dword [ecx]
call fcn.00472910
jmp 0x467738
xor eax, eax
mov edx, dword [esp + 0xac]
add dword [edx + 0x18], ebp
mov edx, dword [esp + 0x98]
mov ecx, dword [esp + 0x9c]
mov edi, dword [esp + 0xa0]
add dword [edx], ebp
sub dword [ecx], ebp
mov ebx, dword [edi]
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0xa4]
cmp ebp, dword [esp + 0x5c]
lea esi, [ebx + edx*4]
mov ebx, dword [esp + 0xac]
mov dword [edi], esi
jge 0x46777f
mov eax, 0x21
sub dword [ecx], edx
sub dword [ebx], ebp
add esp, 0x84
pop ebp
pop ebx
pop edi
pop esi
ret 0x18
mov eax, 0x21
add esp, 0x84
pop ebp
pop ebx
pop edi
pop esi
ret 0x18
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x50]
jmp 0x467065
mov dword [esp + 0x58], eax
mov edi, dword [esp + 0x48]
jmp 0x4675fc
xor eax, eax
jmp 0x46729b
xor eax, eax
mov esi, 2
jmp 0x46729b
cmp edi, 0x1000
jle 0x4673cf
jmp 0x46746e
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x50]
jmp 0x4673b7
mov ebp, 2
jmp 0x4673b7
mov edi, dword [esp + 0x48]
jmp 0x4675fc
mov dword [esp + 0x58], ebp
mov edi, dword [esp + 0x48]
jmp 0x4675fc
mov edx, dword [esp + 0xac]
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0xa8]
mov dword [edx], eax
mov eax, dword [edx + 0x14]
test eax, eax
mov dword [edx + 0xec], ecx
je 0x467d62
cmp eax, 1
jne 0x467a35
mov dword [esp + 0x58], 0
mov ebx, edi
cmp edi, dword [esp + 0x1c]
jge 0x467e75
mov dword [esp + 0x54], esi
mov dword [esp + 0x4c], ebp
mov edx, dword [esp + 0x58]
cmp edx, dword [esp + 0x7c]
jge 0x467f23
mov ebp, dword [esp + 0x60]
mov edi, dword [esp + 0x70]
lea ecx, [ebp + ebx]
mov dword [esp + 0x18], ecx
movzx esi, byte [ecx]
movzx ebp, byte [ecx + 1]
movzx ecx, byte [ecx + 2]
mov dword [esp + 0x10], esi
movsx eax, word [edi + esi*2]
movsx esi, word [edi + ebp*2 + 0x200]
xor eax, esi
movsx edi, word [edi + ecx*2 + 0x400]
xor eax, edi
mov esi, ebx
mov edi, dword [esp + 0x4c]
and esi, 0x7fff
mov ebp, dword [esp + 0x54]
mov ecx, dword [esp + 0x6c]
sub ecx, ebx
mov edi, dword [edi + eax*4]
add ecx, 0xfffffffe
mov dword [ebp + esi*4], edi
cmp ecx, 0x102
mov ebp, dword [esp + 0x4c]
jl 0x4678dd
mov ecx, 0x102
mov dword [esp + 0x14], ecx
mov ecx, edi
mov dword [ebp + eax*4], ebx
test edi, edi
jle 0x467a09
cmp edi, ebx
jge 0x467a09
cmp dword [esp + 0x14], 2
jle 0x467a09
mov dword [esp + 0x50], ebx
xor ebp, ebp
mov dword [esp + 0xc], ecx
mov esi, 2
mov dword [esp + 0x58], edx
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x60]
movzx eax, byte [esi + ebx - 1]
add edx, edi
movzx ecx, byte [edx + esi - 1]
cmp eax, ecx
jne 0x467950
movzx eax, byte [esi + ebx]
movzx ecx, byte [edx + esi]
cmp eax, ecx
jne 0x467950
mov eax, ebx
mov ecx, dword [esp + 0x14]
call fcn.00467f90
cmp esi, eax
jge 0x46794a
mov esi, eax
jge 0x467950
mov dword [esp + 0xc], edi
and edi, 0x7fff
inc ebp
mov eax, dword [esp + 0x54]
mov edi, dword [eax + edi*4]
test edi, edi
jle 0x46797b
cmp edi, dword [esp + 0x50]
jge 0x467f12
cmp esi, dword [esp + 0x14]
jge 0x467f12
cmp ebp, 0x10
jl 0x467919
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x50]
cmp esi, 3
jl 0x467a09
neg ecx
lea eax, [ebx + 1]
add ecx, ebx
lea ebx, [ebx + esi - 1]
mov dword [esp + 0x10], esi
cmp eax, ebx
jg 0x467a0b
mov dword [esp + 0xc], ecx
mov dword [esp + 0x58], edx
mov dword [esp + 0x50], ebx
mov ecx, dword [esp + 0x60]
movzx ebp, byte [eax + ecx]
mov ebx, dword [esp + 0x70]
movzx esi, byte [eax + ecx + 1]
movsx edx, word [ebx + ebp*2]
movzx ebp, byte [eax + ecx + 2]
movsx edi, word [ebx + esi*2 + 0x200]
xor edx, edi
mov edi, dword [esp + 0x54]
movsx ebx, word [ebx + ebp*2 + 0x400]
xor edx, ebx
mov ebx, eax
mov ebp, dword [esp + 0x4c]
and ebx, 0x7fff
mov esi, dword [ebp + edx*4]
mov dword [edi + ebx*4], esi
mov dword [ebp + edx*4], eax
inc eax
cmp eax, dword [esp + 0x50]
jle 0x4679af
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x50]
jmp 0x467a0b
xor ecx, ecx
mov ebp, dword [esp + 0x80]
inc ebx
mov eax, dword [esp + 0x10]
mov word [ebp + edx*4], ax
mov word [ebp + edx*4 + 2], cx
inc edx
cmp ebx, dword [esp + 0x1c]
jl 0x46786b
mov dword [esp + 0x58], edx
jmp 0x467e75
mov dword [esp + 0x58], 0
cmp eax, 2
jne 0x467e75
mov eax, dword [esp + 0xc]
mov ebx, edi
mov dword [esp + 0x58], 0
lea ecx, [edi + eax - 3]
cmp edi, ecx
jge 0x467e75
xor edx, edx
mov eax, 1
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edx
mov edx, ebx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x54], esi
mov dword [esp + 0x4c], ebp
mov ecx, dword [esp + 0x58]
cmp ecx, dword [esp + 0x7c]
jge 0x467f4e
mov edi, dword [esp + 0x60]
mov esi, dword [esp + 0x70]
mov ebx, dword [esp + 0x4c]
lea ebp, [edi + edx]
mov dword [esp + 0x30], ebp
movzx ecx, byte [ebp]
movzx edi, byte [ebp + 1]
movzx ebp, byte [ebp + 2]
mov dword [esp + 0x14], ecx
movsx ecx, word [esi + ecx*2]
movsx edi, word [esi + edi*2 + 0x200]
xor ecx, edi
movsx ebp, word [esi + ebp*2 + 0x400]
xor ecx, ebp
mov edi, edx
and edi, 0x7fff
mov esi, dword [esp + 0x54]
mov ebp, dword [ebx + ecx*4]
mov dword [esp + 0x2c], ebp
mov dword [esi + edi*4], ebp
mov dword [ebx + ecx*4], edx
movzx ecx, ax
mov esi, dword [esp + 0x30]
test ecx, ecx
je 0x467b97
mov ecx, dword [esp + 0x20]
sub ecx, edx
cmp ecx, 0x102
mov eax, ebp
jl 0x467b03
mov ecx, 0x102
mov dword [esp + 0x1c], eax
test eax, eax
mov dword [esp + 0x18], 2
jle 0x467f29
mov dword [esp + 0xc], ecx
xor ebp, ebp
mov edi, dword [esp + 0x2c]
mov ebx, edx
cmp edi, ebx
jge 0x467b93
mov eax, dword [esp + 0xc]
cmp eax, dword [esp + 0x18]
jle 0x467b93
cmp ebp, 0x200
jge 0x467b93
mov ecx, dword [esp + 0x60]
lea edx, [ecx + edi]
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + esi - 1]
movzx ecx, byte [edx + ecx - 1]
cmp eax, ecx
jne 0x467b81
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + esi]
movzx ecx, byte [edx + ecx]
cmp eax, ecx
jne 0x467b81
mov eax, esi
mov ecx, dword [esp + 0xc]
call fcn.00467f90
mov ecx, dword [esp + 0x18]
cmp ecx, eax
jge 0x467b77
mov ecx, eax
jge 0x467b7d
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], ecx
and edi, 0x7fff
inc ebp
mov eax, dword [esp + 0x54]
mov edi, dword [eax + edi*4]
test edi, edi
jg 0x467b23
mov edx, ebx
xor eax, eax
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x70]
lea ebx, [esi + edx + 1]
inc edx
sub edi, edx
movzx esi, byte [ebx + 1]
cmp edi, 0x102
movzx ecx, byte [ebx]
jl 0x467bbe
mov edi, 0x102
mov dword [esp + 0x34], edi
movsx edi, word [ebp + esi*2 + 0x200]
movzx esi, byte [ebx + 2]
movsx ecx, word [ebp + ecx*2]
xor ecx, edi
movsx ebp, word [ebp + esi*2 + 0x400]
xor ecx, ebp
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x24], edx
mov esi, dword [ebp + ecx*4]
mov ebp, 2
mov dword [esp + 0x28], esi
test esi, esi
jle 0x467c70
mov dword [esp + 0x10], eax
xor edi, edi
mov dword [esp + 0x50], edx
cmp esi, dword [esp + 0x50]
jge 0x467f41
cmp ebp, dword [esp + 0x34]
jge 0x467c68
cmp edi, 0x200
jge 0x467f41
mov edx, dword [esp + 0x60]
movzx eax, byte [ebp + ebx - 1]
add edx, esi
movzx ecx, byte [edx + ebp - 1]
cmp eax, ecx
jne 0x467c56
movzx eax, byte [ebp + ebx]
movzx ecx, byte [edx + ebp]
cmp eax, ecx
jne 0x467c56
mov eax, ebx
mov ecx, dword [esp + 0x34]
call fcn.00467f90
cmp ebp, eax
jge 0x467c50
mov ebp, eax
jge 0x467c56
mov dword [esp + 0x28], esi
and esi, 0x7fff
inc edi
mov eax, dword [esp + 0x54]
mov esi, dword [eax + esi*4]
test esi, esi
jg 0x467c02
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
mov ecx, edx
sub ecx, dword [esp + 0x1c]
dec ecx
cmp ebp, dword [esp + 0x18]
jg 0x467d27
cmp dword [esp + 0x18], 3
jle 0x467d21
mov esi, dword [esp + 0x18]
mov ebp, edx
mov dword [esp + 0x14], esi
mov eax, ecx
lea edx, [edx + esi - 1]
cmp edx, dword [esp + 0x24]
jle 0x467d33
mov esi, dword [esp + 0x60]
neg ebp
mov edi, dword [esp + 0x24]
add ebp, edx
mov dword [esp + 0x38], ebp
xor ecx, ecx
mov dword [esp + 0x10], eax
mov ebp, edi
mov dword [esp + 0x50], edx
add esi, edi
mov dword [esp + 0x3c], esi
mov edx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x70]
movzx esi, byte [ecx + edx]
movzx edi, byte [ecx + edx + 1]
movzx edx, byte [ecx + edx + 2]
inc ecx
movsx eax, word [ebx + esi*2]
movsx esi, word [ebx + edi*2 + 0x200]
xor eax, esi
movsx ebx, word [ebx + edx*2 + 0x400]
xor eax, ebx
mov esi, ebp
mov ebx, dword [esp + 0x4c]
and esi, 0x7fff
mov edx, dword [esp + 0x54]
mov edi, dword [ebx + eax*4]
mov dword [edx + esi*4], edi
mov dword [ebx + eax*4], ebp
inc ebp
cmp ecx, dword [esp + 0x38]
jb 0x467cc8
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
jmp 0x467d33
je 0x467f30
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ecx
mov ebp, dword [esp + 0x80]
mov esi, dword [esp + 0x58]
mov ecx, dword [esp + 0x14]
mov word [ebp + esi*4], cx
mov word [ebp + esi*4 + 2], ax
inc esi
mov dword [esp + 0x58], esi
cmp edx, dword [esp + 0x20]
jl 0x467a7d
mov ebx, edx
jmp 0x467e75
lea eax, [edi - 2]
cmp eax, dword [esp + 0x6c]
jge 0x467d82
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x64]
movzx esi, byte [esi + edi]
shl esi, 5
movzx edx, byte [eax + 1]
xor esi, edx
jmp 0x467d84
xor esi, esi
mov dword [esp + 0x58], 0
mov ebx, edi
cmp edi, dword [esp + 0x1c]
jge 0x467e75
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], ebp
mov edi, dword [esp + 0x58]
cmp edi, dword [esp + 0x7c]
jge 0x467f55
mov eax, dword [esp + 0x60]
shl esi, 5
mov ebp, dword [esp + 0x4c]
add eax, ebx
movzx ecx, byte [eax + 2]
xor esi, ecx
and esi, 0x7fff
mov edx, dword [ebp + esi*4]
mov dword [ebp + esi*4], ebx
mov ebp, ebx
sub ebp, edx
movzx ecx, byte [eax]
test ebp, ebp
mov dword [esp + 0xc], ecx
jle 0x467e4f
cmp ebp, ebx
jge 0x467e4f
cmp edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x74]
jl 0x467df0
mov ecx, dword [esp + 0x60]
add edx, ecx
mov ecx, dword [esp + 0x6c]
sub ecx, ebx
add ecx, 0xfffffffe
cmp ecx, 0x102
jl 0x467e08
mov ecx, 0x102
call fcn.00467f90
cmp eax, 3
jl 0x467e4f
mov dword [esp + 0xc], eax
lea ecx, [ebx + 1]
lea ebx, [ebx + eax - 1]
cmp ecx, ebx
jg 0x467e51
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x60]
mov edx, dword [esp + 0x4c]
shl esi, 5
movzx eax, byte [ecx + edi + 2]
xor esi, eax
and esi, 0x7fff
mov dword [edx + esi*4], ecx
inc ecx
cmp ecx, ebx
jle 0x467e2d
mov dword [esp + 0x4c], edx
mov edi, dword [esp + 0x58]
jmp 0x467e51
xor ebp, ebp
mov ecx, dword [esp + 0x80]
inc ebx
mov eax, dword [esp + 0xc]
mov word [ecx + edi*4], ax
mov word [ecx + edi*4 + 2], bp
inc edi
cmp ebx, dword [esp + 0x1c]
jl 0x467da4
mov dword [esp + 0x58], edi
cmp ebx, dword [esp + 0x6c]
jge 0x467eaf
mov esi, dword [esp + 0x60]
mov ecx, dword [esp + 0x58]
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x80]
cmp ecx, eax
jge 0x467eab
movzx edx, byte [ebx + esi]
inc ebx
mov word [edi + ecx*4], dx
xor edx, edx
mov word [edi + ecx*4 + 2], dx
inc ecx
cmp ebx, ebp
jl 0x467e92
mov dword [esp + 0x58], ecx
mov eax, dword [esp + 0xac]
mov ebp, ebx
mov eax, dword [eax + 0x10]
cmp eax, 1
jne 0x467edc
mov eax, dword [esp + 0xac]
lea ecx, [eax + 0xc]
push ecx
push ebx
mov edx, dword [esp + 0xa0]
push dword [edx]
call fcn.00472470
jmp 0x467eff
cmp eax, 2
jne 0x467efd
mov eax, dword [esp + 0xac]
lea ecx, [eax + 0xc]
push ecx
push ebx
mov edx, dword [esp + 0xa0]
push dword [edx]
call fcn.00472910
jmp 0x467eff
xor eax, eax
mov edx, dword [esp + 0xac]
mov dword [edx + 0x18], 0
jmp 0x467742
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x50]
jmp 0x467987
mov dword [esp + 0x58], edx
jmp 0x467eaf
xor eax, eax
jmp 0x467b97
cmp ecx, 0x1000
jle 0x467c8c
jmp 0x467d27
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
jmp 0x467c70
mov ebx, edx
jmp 0x467eaf
mov dword [esp + 0x58], edi
jmp 0x467eaf
mov eax, 0xfffffffa
add esp, 0x84
pop ebp
pop ebx
pop edi
pop esi
ret 0x18
mov eax, 0xfffffff8
add esp, 0x84
pop ebp
pop ebx
pop edi
pop esi
ret 0x18