Function at 0x402e00
Capabilities:
Encode data using xor

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0xbc
xor esi, esi
mov dword [esp + 0x2c], edx
xor ecx, ecx
mov dword [esp + 0x28], eax
mov eax, dword [ecx*4 + 0x49f740]
neg eax
add eax, 0x200
cdq
xor eax, edx
sub eax, edx
cmp eax, esi
jle 0x402e2f
mov ebx, ecx
jle 0x402e33
mov esi, eax
inc ecx
cmp ecx, 0x20
jl 0x402e16
mov eax, dword [ebx*4 + 0x49f740]
mov esi, eax
xor ecx, ecx
xor edi, edi
and esi, 0x80000003
jge 0x402e55
sub esi, 1
or esi, 0xfffffffc
inc esi
mov ebp, eax
mov eax, edi
shl eax, 6
neg eax
add eax, ebp
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa0
jge 0x402ea4
mov dword [esp + ecx*4 + 0x30], edi
test esi, esi
jne 0x402e9f
cmp ebp, 0x40
jge 0x402e8b
lea edx, [edi*8]
cmp ebp, edx
jge 0x402e9f
inc eax
mov dword [esp + ecx*4 + 0x70], eax
jmp 0x402ea3
jle 0x402e9f
lea edx, [edi*8]
cmp ebp, edx
jle 0x402e9f
dec eax
mov dword [esp + ecx*4 + 0x70], eax
jmp 0x402ea3
mov dword [esp + ecx*4 + 0x70], eax
inc ecx
inc edi
cmp edi, 0x20
jb 0x402e57
test ecx, ecx
jle 0x402efe
mov dword [esp + 0x10], ebx
xor esi, esi
mov edx, esi
cmp esi, ecx
jge 0x402eea
mov eax, 0xffffffff
mov ebx, dword [esp + edx*4 + 0x70]
cmp eax, ebx
jae 0x402ee5
mov ebp, dword [esp + edx*4 + 0x30]
mov eax, ebx
mov edi, dword [esp + esi*4 + 0x30]
mov dword [esp + esi*4 + 0x30], ebp
mov ebp, dword [esp + esi*4 + 0x70]
mov dword [esp + esi*4 + 0x70], ebx
mov dword [esp + edx*4 + 0x30], edi
mov dword [esp + edx*4 + 0x70], ebp
inc edx
cmp edx, ecx
jl 0x402ebf
lea esi, [esi]
lea edi, [edi]
inc esi
cmp esi, ecx
jl 0x402eb4
mov ebx, dword [esp + 0x10]
xor esi, esi
dec ecx
js 0x403214
mov eax, dword [esp + ecx*4 + 0x30]
xor edx, edx
shl eax, 6
cmp eax, dword [edx*4 + 0x45f640]
jne 0x402f21
mov dword [esi*4 + 0x49f7c0], edx
inc esi
inc edx
cmp edx, 0x10000
jl 0x402f10
lea esi, [esi]
lea edi, [edi]
dec ecx
jns 0x402f07
test esi, esi
jle 0x403214
mov eax, dword [0x4df91c]
xor edi, edi
mov ecx, dword [0x4df920]
mov edx, dword [0x4df924]
movsx ebx, bx
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
test edi, 0x3ff
jne 0x402f79
push 0x44d8b0
call fcn.00438e90
add esp, 4
mov edx, dword [edi*4 + 0x49f7c0]
xor ebp, ebp
movzx ecx, dx
mov eax, ebx
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], esi
mov ebx, ecx
mov edi, eax
xor esi, esi
test eax, eax
jl 0x403006
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], eax
mov eax, dword [ebx*4 + 0x45f640]
sub eax, dword [edi*4 + 0x49f740]
movsx eax, ax
cdq
xor eax, edx
sub eax, edx
movzx edx, ax
add esi, dword [edx*4 + 0x45e540]
movzx esi, si
cmp esi, 0x4074
jg 0x403280
movsx eax, ax
cmp eax, 0x57
jg 0x403280
xor ebx, 1
mov eax, ebx
shl eax, 0xf
shr ebx, 1
or eax, ebx
mov ebx, ebp
movzx eax, ax
mov edx, eax
xor ebx, eax
and edx, 0x8000
jne 0x402ffb
mov ebx, eax
dec edi
jns 0x402fa1
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov ebx, edx
cmp eax, 0x1e
jg 0x403081
mov dword [esp + 0x3c], edx
mov edi, eax
mov dword [esp + 0x38], eax
mov eax, ebx
mov edx, ebp
and eax, 0x8000
xor edx, ebx
movzx ebx, bx
test eax, eax
cmovne ebx, edx
movzx edx, bx
lea ebx, [edx + edx]
shr edx, 0xf
or ebx, edx
xor ebx, 1
movzx eax, bx
mov edx, dword [eax*4 + 0x45f640]
sub edx, dword [edi*4 + 0x49f744]
movsx eax, dx
cdq
xor eax, edx
sub eax, edx
movsx eax, ax
add esi, dword [eax*4 + 0x45e540]
movzx esi, si
cmp esi, 0x4074
jg 0x403280
cmp eax, 0x57
jg 0x403280
inc edi
cmp edi, 0x1f
jl 0x403017
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
movzx edi, bx
xor esi, esi
mov dword [esp + 0x38], eax
mov eax, edi
mov ebx, edi
and eax, 0x8000
xor ebx, ebp
test eax, eax
cmovne edi, ebx
inc esi
rol di, 1
movzx edi, di
movzx esi, si
xor edi, 1
cmp esi, 0x5f
jle 0x40308a
mov esi, edi
shr esi, 0xf
xor edi, esi
rol di, 1
movzx esi, di
mov edi, ebp
shl esi, 0x10
xor edi, 1
or esi, edi
mov edi, esi
mov ebx, esi
and edi, 0x3c000000
or ebx, 0x8000
test edi, edi
mov eax, dword [esp + 0x38]
cmove esi, ebx
cmp esi, 0xc0000000
jbe 0x4031f0
xor ebx, ebx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x1c], ebp
mov ebp, ebx
mov dword [esp + 0x38], eax
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
mov edx, esi
lea eax, [esp + 0x40]
mov ecx, edi
mov dword [esp + 0xc], 0
call fcn.004048d0
xor eax, eax
mov dword [esp + 0x24], ebp
mov dword [esp + 0x18], edi
mov edi, eax
mov ebp, dword [esp + 0x14]
lea edx, [edi*4]
or edx, 3
mov dword [esp + 0x44], edx
movaps xmm0, xmmword [esp + 0x40]
movaps xmmword [esp + 0x70], xmm0
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x80], ecx
mov edx, 0x80000000
lea eax, [esp + 0x70]
call fcn.00403290
mov edx, eax
add edx, 0x80000000
lea eax, [esp + 0x70]
call fcn.00403290
cmp eax, ebp
jne 0x4031b3
mov edx, esi
mov ecx, esi
movaps xmm0, xmmword [esp + 0x40]
and edx, 0x3c000000
movaps xmmword [esp + 0x70], xmm0
or ecx, 0x8000
test edx, edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x80], edx
cmove esi, ecx
xor edx, edx
lea eax, [esp + 0x70]
call fcn.00403290
mov edx, eax
lea eax, [esp + 0x70]
call fcn.00403290
cmp eax, ebx
je 0x403221
inc edi
cmp edi, 0xffff
jb 0x403129
mov ebp, dword [esp + 0x24]
or esi, 0x8000
inc ebp
mov edi, dword [esp + 0x18]
cmp ebp, 2
jl 0x403104
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], edi
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x38]
inc ebp
movzx ebp, bp
cmp ebp, 0x7fff
jl 0x402f8f
nop
mov edi, dword [esp + 0x30]
mov ebx, eax
inc edi
mov esi, dword [esp + 0x34]
cmp edi, esi
jl 0x402f64
xor eax, eax
add esp, 0xbc
pop ebp
pop ebx
pop edi
pop esi
ret
movzx edx, word [0x4df944]
mov ecx, esi
mov word [0x45dd4c], di
shr ecx, 0x10
movzx ebx, word [edx*2 + 0x4df8c0]
push edi
push esi
mov word [ebx*2 + 0x45dd40], si
mov word [ebx*2 + 0x45dd42], cx
shr ebx, 1
push 0x44d8b4
mov dword [ebx*4 + 0x45e4b0], esi
call fcn.00438e90
add esp, 0xc
mov edx, dword [esp + 0x2c]
mov eax, 1
mov ecx, dword [esp + 0x28]
mov dword [edx], edi
mov dword [ecx], esi
add esp, 0xbc
pop ebp
pop ebx
pop edi
pop esi
ret
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
jmp 0x4031f0