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

Disassembly:
sub esp, 0x48
mov eax, dword [0x7a14b4]
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x14], eax
movzx eax, word [0x7a1494]
push ebx
push ebp
push esi
mov ebp, dword [0x7a1478]
push edi
mov edi, dword [edx + eax*4]
mov eax, dword [0x7a147c]
dec eax
mov esi, dword [0x7a1498]
mov dword [0x7a147c], eax
movzx ecx, word [ecx + 0x1ad4]
add ecx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [0x7a146c]
mov dword [esp + 0x3c], ecx
mov ecx, dword [0x7a14a8]
mov dword [esp + 0x14], esi
mov ebx, dword [ecx + eax*4]
mov eax, dword [esp + 0x74]
mov ecx, dword [0x7a144c]
or eax, 0x346
mov dword [esp + 0x40], eax
inc ebp
movzx eax, byte [0x7a145e]
imul eax, eax, 0xd7c
mov dword [0x7a1478], ebp
mov dword [esp + 0x38], ebx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x28], eax
mov eax, dword [0x7a1454]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov eax, dword [ecx + eax*8]
mov dword [esp + 0x10], eax
cmp eax, dword [ebx + 0x7324]
jb 0x403f03
mov ecx, dword [esp + 0x24]
push 0x10
pop ebp
sub ebp, ecx
lea eax, [ecx + eax*4]
mov dword [esp + 0x48], ebp
mov dword [esp + 0x18], eax
jmp 0x403d96
mov edx, dword [esp + 0x68]
mov eax, dword [esi]
mov ebx, dword [esp + 0x70]
lea ecx, [edx + eax*8]
movzx eax, word [0x7a1468]
xor eax, 0x662
cdq
idiv dword [esp + 0x10]
mov eax, edx
cdq
idiv dword [ecx]
mov eax, dword [esp + 0x60]
mov dword [ecx], edx
mov ecx, dword [0x7a1490]
mov edx, dword [esp + 0x18]
movzx eax, byte [eax + 0x66c]
add edx, ebp
mov ebp, dword [esp + 0x68]
xor eax, dword [edx + ecx]
mov ecx, dword [ebx]
xor eax, 0x1c44
cdq
idiv dword [ebp + ecx*4]
mov ebp, dword [esp + 0x74]
cdq
movzx ecx, byte [ebp + 0x1e]
idiv ecx
mov ecx, dword [esp + 0x64]
mov edx, 0x8ff
mov byte [ebp + 0x1e], al
mov eax, dword [ebx]
add ebx, 4
add eax, 8
mov dword [esp + 0x70], ebx
imul eax, eax, 6
add word [eax + ecx], dx
mov cl, byte [edi + 0x504]
mov eax, dword [esi]
mov edi, dword [esp + 0x60]
mov edx, dword [esp + 0x20]
sub cl, dl
inc edx
mov dword [esp + 0x20], edx
mov byte [eax + edi + 0xf], cl
mov ecx, dword [esp + 0x24]
mov eax, dword [0x7a14ac]
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x44], eax
mov eax, dword [ecx + 0x2680]
and eax, 0x1af9
dec dword [esi]
mov ebp, dword [ecx + 0xbdc]
mov ecx, dword [0x7a147c]
and ebp, 0x9a0
mov dword [esp + 0x30], eax
mov eax, dword [esi]
mov ebx, dword [0x7a1488]
movzx eax, word [edx + eax*2 + 0xc]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x34], eax
lea eax, [ecx + 9]
imul eax, eax, 3
inc ecx
movzx edi, byte [eax]
mov eax, dword [esp + 0x70]
mov dword [0x7a147c], ecx
dec dword [esi]
mov ecx, dword [esi]
mov eax, dword [eax]
movzx esi, byte [eax + edx]
mov eax, dword [esp + 0x28]
or esi, dword [eax + ecx*4]
movzx eax, byte [0x7a145f]
mov ecx, dword [esp + 0x10]
cdq
idiv ecx
push ecx
push eax
push esi
push edi
push dword [esp + 0x30]
push 0x6cb
push ebx
push ebp
push dword [esp + 0x54]
push dword [esp + 0x54]
push dword [esp + 0x6c]
push 1
call fcn.004051a3
mov ecx, dword [esp + 0x48]
add esp, 0x30
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x48]
mov dword [ecx], eax
add ecx, 4
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], eax
cmp eax, dword [ebx + 0x7324]
jae 0x403d92
mov edx, dword [esp + 0x70]
mov ebp, dword [esp + 0x2c]
jmp 0x403f0b
mov edx, dword [esp + 0x70]
mov dword [esp + 0x70], edx
dec dword [esi]
mov eax, dword [esi]
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + eax*8]
mov dword [esp + 0x30], eax
cmp eax, 0xe4a
jge 0x4040c9
lea ecx, [eax + edi]
mov dword [esp + 0x18], ecx
imul ecx, eax, 0xc
lea eax, [ebx + eax*4]
mov dword [esp + 0x10], eax
push 0x20
pop eax
sub eax, ebx
mov dword [esp + 0x48], eax
add ecx, 0xae1
push 0x21
pop eax
sub eax, edi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x44], eax
movzx eax, word [0x7a1494]
mov ebx, dword [esp + 0x6c]
mov ecx, dword [0x7a1478]
push 0x1b
movzx eax, word [ebx + eax*2]
mov ebx, dword [esp + 0x28]
add dword [ebx + ecx*4], eax
inc word [0x7a1494]
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
add ecx, dword [esp + 0x4c]
pop eax
movzx eax, byte [eax]
mov eax, dword [ebx + eax*4]
mov dword [esp + 0x54], eax
mov eax, dword [0x7a144c]
mov eax, dword [ecx + eax]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x50], eax
mov eax, dword [ebx]
mov ebx, 0x190e
movzx eax, byte [eax + 0x1b]
xor eax, dword [esi + ecx*8]
mov ecx, dword [esp + 0x40]
mov esi, dword [edx]
mov dword [esp + 0x4c], eax
imul eax, dword [0x7a1488], 0xc
mov ebp, dword [eax + ecx]
mov eax, dword [0x7a14b4]
mov ecx, dword [esp + 0x2c]
movzx eax, word [ecx + eax*2]
mov ecx, dword [0x7a1460]
sub ebx, eax
mov eax, 0x103d
cdq
idiv dword [ecx + esi*4]
xor edx, edx
mov edi, eax
mov eax, dword [esp + 0x14]
imul ecx, dword [eax], 3
mov eax, dword [esp + 0x60]
movzx ecx, byte [ecx + eax]
mov eax, dword [esp + 0x30]
imul esi, ecx, 0x289
mov ecx, dword [esp + 0x64]
movzx ecx, word [ecx + eax*2]
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
div ecx
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x18]
movzx ecx, byte [eax + ecx]
mov eax, dword [esp + 0x18]
imul ecx, dword [0x7a1474]
movzx eax, byte [eax]
push eax
push ecx
push edx
push esi
push edi
mov edi, dword [esp + 0x44]
push edi
push ebx
push ebp
push dword [esp + 0x6c]
push edi
push dword [esp + 0x78]
push dword [esp + 0x80]
call fcn.004051a3
mov ecx, dword [0x7a147c]
add esp, 0x30
mov edx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x2c]
mov dword [edx + ecx*4], eax
xor edx, edx
imul eax, dword [0x7a146c], 6
mov esi, dword [0x7a14b4]
movzx ecx, word [eax + ebp]
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + 0x1a54]
div ecx
mov eax, dword [esp + 0x64]
mov ecx, 0x1a3d
add dword [esp + 0x10], 4
add word [eax + esi*2], dx
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x70]
mov eax, dword [esi]
movzx eax, word [ebp + eax*2]
xor eax, dword [ecx]
mov ecx, dword [esp + 0x68]
sub eax, dword [ecx + 0x5d34]
inc edi
mov ecx, dword [esp + 0x34]
inc dword [esp + 0x18]
mov dword [esp + 0x30], edi
mov dword [ecx], eax
add ecx, 0xc
mov dword [esp + 0x34], ecx
cmp ecx, 0xb659
jl 0x403f52
mov eax, dword [0x7a1484]
xor edx, edx
mov ebx, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0x64]
lea ecx, [eax + ecx*8]
mov eax, dword [ebx]
movzx eax, byte [eax + eax + 0x1b]
div dword [ecx + 0x7c]
mov edx, dword [esp + 0x38]
mov dword [ecx + 0x7c], eax
mov eax, dword [0x7a1454]
movzx ecx, word [edi + eax*4]
mov eax, dword [ebx]
mov dword [edx + eax*4], ecx
mov ecx, dword [esi]
mov eax, dword [0x7a1458]
xor eax, dword [0x7a149c]
mov edx, dword [esp + 0x68]
add dword [edx + ecx*4], eax
mov edx, dword [ebx]
mov eax, dword [esi + 4]
movzx ecx, word [ebp + edx*2]
movzx eax, word [edi + eax*2]
imul eax, ecx
mov ecx, dword [esp + 0x1c]
pop edi
mov word [ebp + edx*2], ax
imul eax, dword [ebx], 3
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x38]
add byte [eax + ecx], dl
mov eax, dword [0x7a1488]
imul edx, dword [esi + 4], 0xc
pop esi
movzx ecx, byte [ebp + eax*2]
mov eax, dword [ebx]
movzx eax, byte [eax + ebp]
xor ecx, eax
mov eax, dword [esp + 0x38]
pop ebp
pop ebx
xor dword [edx + eax], ecx
mov eax, 0x11cd
add esp, 0x48
ret