Function at 0x402800
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42dc62
mov eax, dword fs:[0]
push eax
sub esp, 0x8bc
mov eax, dword [0x43b698]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x10]
mov esi, ecx
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov dword [ebp - 0x8c8], eax
mov eax, dword [edx + 0x28]
call eax
xor edi, edi
cmp dword [ebp + 0xc], edi
je 0x402eda
mov ecx, dword [esi + 0xc]
lea eax, [ebp - 0x814]
mov word [ebp - 0x814], 0xce31
mov edx, dword [ecx]
mov edx, dword [edx + 0x30]
push eax
push 2
call edx
push 0x400
lea eax, [ebp - 0x413]
push edi
push eax
mov byte [ebp - 0x414], 0
call fcn.0042ccee
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x38]
add esp, 0xc
lea eax, [ebp - 0x414]
push eax
push 1
call edx
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx]
mov edx, dword [eax + 0x28]
call edx
mov al, byte [ebp - 0x414]
cmp al, 0x1f
je 0x402eda
cmp al, 0x79
jne 0x402eda
mov dword [ebp - 0x8a8], 0xf
mov dword [ebp - 0x8ac], edi
mov byte [ebp - 0x8bc], 0
mov ebx, dword [ebp + 8]
shr ebx, 0x18
push ebx
lea ecx, [ebp - 0x8bc]
mov dword [ebp - 4], edi
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
lea edx, [ebp - 0x8bc]
push edx
call eax
mov dword [ebp - 0x854], 0xf
mov dword [ebp - 0x858], edi
mov byte [ebp - 0x868], 0
mov eax, dword [ebp + 8]
shr eax, 0x10
push eax
lea ecx, [ebp - 0x868]
mov byte [ebp - 4], 1
mov dword [ebp - 0x8c4], eax
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x868]
push eax
call edx
mov dword [ebp - 0x88c], 0xf
mov dword [ebp - 0x890], edi
mov byte [ebp - 0x8a0], 0
mov eax, dword [ebp + 8]
shr eax, 8
push eax
lea ecx, [ebp - 0x8a0]
mov byte [ebp - 4], 2
mov dword [ebp - 0x8c0], eax
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
lea edx, [ebp - 0x8a0]
push edx
call eax
mov dword [ebp - 0x838], 0xf
mov dword [ebp - 0x83c], edi
mov byte [ebp - 0x84c], 0
mov ecx, dword [ebp + 8]
push ecx
lea ecx, [ebp - 0x84c]
mov byte [ebp - 4], 3
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x84c]
push eax
call edx
mov dword [ebp - 0x870], 0xf
mov dword [ebp - 0x874], edi
mov byte [ebp - 0x884], 0
xor bl, byte [ebp - 0x8c4]
lea ecx, [ebp - 0x884]
xor bl, byte [ebp - 0x8c0]
mov byte [ebp - 4], 4
xor bl, byte [ebp + 8]
movzx eax, bl
push eax
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
lea eax, [ebp - 0x884]
push eax
mov edx, dword [edx + 0x2c]
call edx
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
lea edx, [ebp - 0x414]
push edx
push 1
call eax
cmp byte [ebp - 0x414], 0x79
jne 0x402ea3
mov dword [ebp - 0x81c], 0xf
mov dword [ebp - 0x820], edi
mov byte [ebp - 0x830], 0
mov ebx, dword [ebp + 0xc]
mov ecx, ebx
and ecx, 0x80000003
mov byte [ebp - 4], 5
jns 0x402a50
dec ecx
or ecx, 0xfffffffc
inc ecx
lea ecx, [ebp - 0x830]
jne 0x402b13
dec bl
mov byte [ebp - 0x8c4], bl
mov edx, dword [ebp - 0x8c4]
push edx
mov byte [ebp - 0x8c0], bl
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
lea edx, [ebp - 0x830]
push edx
call eax
movzx eax, byte [ebp - 0x8c4]
inc eax
xor ebx, ebx
mov dword [ebp - 0x8c4], eax
cmp eax, edi
jle 0x402ad4
jmp 0x402aa0
mov ecx, dword [ebp - 0x8c8]
movzx edx, byte [ecx + ebx]
push edx
lea ecx, [ebp - 0x830]
call fcn.004026b0
mov eax, dword [ebp - 0x8c8]
mov cl, byte [eax + ebx]
xor byte [ebp - 0x8c0], cl
inc ebx
cmp ebx, dword [ebp - 0x8c4]
jl 0x402aa0
mov eax, dword [ebp - 0x8c4]
mov ecx, dword [esi + 0xc]
mov ebx, dword [ebp - 0x8c8]
mov edx, dword [ecx]
push ebx
push eax
mov eax, dword [edx + 0x30]
call eax
mov ecx, dword [ebp - 0x8c0]
push ecx
lea ecx, [ebp - 0x830]
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x830]
push eax
call edx
mov ebx, 0x10
jmp 0x402c8b
mov eax, ebx
cdq
and edx, 3
add eax, edx
sar eax, 2
add al, al
add al, al
add al, 3
mov byte [ebp - 0x8c4], al
mov byte [ebp - 0x8c0], al
mov eax, dword [ebp - 0x8c4]
push eax
call fcn.004026b0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x830]
push eax
call edx
test ebx, ebx
jle 0x402b7b
mov eax, dword [ebp - 0x8c8]
movzx ecx, byte [eax + edi]
push ecx
lea ecx, [ebp - 0x830]
call fcn.004026b0
mov edx, dword [ebp - 0x8c8]
mov al, byte [edx + edi]
xor byte [ebp - 0x8c0], al
inc edi
cmp edi, ebx
jl 0x402b51
mov ecx, dword [esi + 0xc]
mov eax, dword [ebp - 0x8c8]
mov edx, dword [ecx]
mov edx, dword [edx + 0x30]
push eax
push ebx
call edx
movzx eax, byte [ebp - 0x8c4]
mov edi, 1
cmp ebx, eax
jg 0x402c1e
sub eax, ebx
lea ebx, [edi + eax]
cmp dword [ebp - 0x81c], edi
jae 0x402bc1
mov eax, dword [ebp - 0x820]
push eax
push edi
lea ecx, [ebp - 0x830]
call fcn.00402420
mov eax, dword [ebp - 0x830]
mov ecx, 0x10
cmp dword [ebp - 0x81c], ecx
jae 0x402bda
lea eax, [ebp - 0x830]
mov byte [eax], 0xff
mov eax, dword [ebp - 0x830]
mov dword [ebp - 0x820], edi
cmp dword [ebp - 0x81c], ecx
jae 0x402bf7
lea eax, [ebp - 0x830]
mov byte [eax + 1], 0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x830]
push eax
call edx
sub ebx, edi
mov al, byte [ebp - 0x8c0]
not al
mov byte [ebp - 0x8c0], al
jne 0x402ba6
cmp dword [ebp - 0x81c], edi
jae 0x402c39
mov ecx, dword [ebp - 0x820]
push ecx
push edi
lea ecx, [ebp - 0x830]
call fcn.00402420
mov eax, dword [ebp - 0x830]
mov ebx, 0x10
cmp dword [ebp - 0x81c], ebx
jae 0x402c52
lea eax, [ebp - 0x830]
mov dl, byte [ebp - 0x8c0]
mov byte [eax], dl
mov eax, dword [ebp - 0x830]
mov dword [ebp - 0x820], edi
cmp dword [ebp - 0x81c], ebx
jae 0x402c74
lea eax, [ebp - 0x830]
mov byte [eax + 1], 0
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
lea edx, [ebp - 0x830]
push edx
call eax
xor edi, edi
mov ecx, dword [ebp + 0x14]
push ecx
call dword [0x4310e0]
mov esi, dword [esi + 0xc]
lea eax, [ebp - 0x414]
mov byte [ebp - 0x414], 0xff
mov edx, dword [esi]
mov edx, dword [edx + 0x38]
push eax
push 1
mov ecx, esi
call edx
cmp byte [ebp - 0x414], 0x79
jne 0x402db3
cmp dword [ebp - 0x81c], ebx
jb 0x402cd5
mov eax, dword [ebp - 0x830]
push eax
call fcn.0042cccc
add esp, 4
mov esi, 0xf
mov dword [ebp - 0x81c], esi
mov dword [ebp - 0x820], edi
mov byte [ebp - 0x830], 0
cmp dword [ebp - 0x870], ebx
jb 0x402d04
mov ecx, dword [ebp - 0x884]
push ecx
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x870], esi
mov dword [ebp - 0x874], edi
mov byte [ebp - 0x884], 0
cmp dword [ebp - 0x838], ebx
jb 0x402d2e
mov edx, dword [ebp - 0x84c]
push edx
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x838], esi
mov dword [ebp - 0x83c], edi
mov byte [ebp - 0x84c], 0
cmp dword [ebp - 0x88c], ebx
jb 0x402d58
mov eax, dword [ebp - 0x8a0]
push eax
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x88c], esi
mov dword [ebp - 0x890], edi
mov byte [ebp - 0x8a0], 0
cmp dword [ebp - 0x854], ebx
jb 0x402d82
mov ecx, dword [ebp - 0x868]
push ecx
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x854], esi
mov dword [ebp - 0x858], edi
mov byte [ebp - 0x868], 0
cmp dword [ebp - 0x8a8], ebx
jb 0x402dac
mov edx, dword [ebp - 0x8bc]
push edx
call fcn.0042cccc
add esp, 4
xor al, al
jmp 0x402edc
cmp dword [ebp - 0x81c], ebx
jb 0x402dca
mov eax, dword [ebp - 0x830]
push eax
call fcn.0042cccc
add esp, 4
mov esi, 0xf
mov dword [ebp - 0x81c], esi
mov dword [ebp - 0x820], edi
mov byte [ebp - 0x830], 0
cmp dword [ebp - 0x870], ebx
jb 0x402df9
mov ecx, dword [ebp - 0x884]
push ecx
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x870], esi
mov dword [ebp - 0x874], edi
mov byte [ebp - 0x884], 0
cmp dword [ebp - 0x838], ebx
jb 0x402e23
mov edx, dword [ebp - 0x84c]
push edx
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x838], esi
mov dword [ebp - 0x83c], edi
mov byte [ebp - 0x84c], 0
cmp dword [ebp - 0x88c], ebx
jb 0x402e4d
mov eax, dword [ebp - 0x8a0]
push eax
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x88c], esi
mov dword [ebp - 0x890], edi
mov byte [ebp - 0x8a0], 0
cmp dword [ebp - 0x854], ebx
jb 0x402e77
mov ecx, dword [ebp - 0x868]
push ecx
call fcn.0042cccc
add esp, 4
mov dword [ebp - 0x854], esi
mov dword [ebp - 0x858], edi
mov byte [ebp - 0x868], 0
cmp dword [ebp - 0x8a8], ebx
jb 0x402eda
mov edx, dword [ebp - 0x8bc]
push edx
call fcn.0042cccc
add esp, 4
jmp 0x402eda
lea ecx, [ebp - 0x884]
call fcn.00402590
lea ecx, [ebp - 0x84c]
call fcn.00402590
lea ecx, [ebp - 0x8a0]
call fcn.00402590
lea ecx, [ebp - 0x868]
call fcn.00402590
lea ecx, [ebp - 0x8bc]
call fcn.00402590
mov al, 0x14
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0042ccde
mov esp, ebp
pop ebp
ret 0x10