Function at 0x402720
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x70
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov dword [esp + 0x60], 0x6f0f8f87
mov word [esp + 0x54], 0xe17f
mov edx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov edi, dword [esp + 0x60]
mov ebx, edi
xor ebx, 0x25ffdc4a
mov dword [esp + 0x38], ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], edi
call fcn.004030e0
mov cl, byte [esp + 0x6b]
mov ch, cl
add ch, 0xd1
mov eax, dword [eax + 0xc]
mov byte [esp + 0x6b], ch
mov edx, eax
add edx, 0x14
mov esi, 0x32078921
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
mov eax, edi
mov dword [esp + 0xc], edx
mul esi
mov esi, dword [esp + 0x18]
imul ebx, esi, 0x32078921
add edx, ebx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x14]
mov dword [esp + 0x48], 0
mov si, word [esp + 0x56]
mov ebx, dword [esp + 0xc]
cmp edx, ebx
mov byte [esp + 0xb], cl
mov word [esp + 8], si
mov dword [esp + 4], edx
je 0x402910
jmp 0x4028c8
mov eax, dword [esp + 0x30]
add eax, 0xfffffff8
mov cl, byte [esp + 0xb]
mov byte [esp + 0x6b], cl
mov dword [esp + 0x48], eax
xor cl, 0x1f
mov byte [esp + 0x6b], cl
jmp 0x402910
mov ax, word [esp + 8]
imul ax, ax
mov ecx, dword [esp + 0x4c]
mov dx, word [ecx]
shr dx, 1
mov word [esp + 0x56], ax
movzx ecx, dx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x64], ecx
cmp dx, 0
je 0x402936
jmp 0x402a37
mov eax, dword [esp + 0x40]
mov dword [esp + 0x30], eax
mov dword [esp + 0x58], 0x81a9eac0
mov dword [esp + 0x5c], 0x3928332e
mov eax, dword [esp + 0x1c]
add eax, 0x672786a3
mov ecx, dword [esp + 0x18]
adc ecx, 0
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], ecx
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x28]
mov dword [esp + 0x28], ecx
mov dx, word [esp + 8]
mov cx, dx
not ecx
mov si, cx
mov word [esp + 0x56], si
mov eax, dword [eax + 0x10]
mov dword [esp + 0x44], eax
mov word [esp + 0x56], 0x2880
mov eax, dword [esp + 0x1c]
not eax
mov ecx, dword [esp + 0x18]
not ecx
mov edi, dword [esp + 0x44]
mov bl, byte [esp + 0x2f]
mov esi, dword [esp + 0x24]
sub edi, esi
sete bh
and bl, bh
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], eax
test bl, 1
mov dword [esp], edi
jne 0x4027e2
jmp 0x40291c
mov eax, dword [esp + 0x24]
cmp eax, 0
setne cl
mov dword [esp + 0x64], 0x333136e6
and cl, 1
mov byte [esp + 0x2f], cl
mov dx, word [esp + 8]
or dx, 0x68ef
mov word [esp + 0x56], dx
mov esi, dword [esp + 4]
mov dword [esp + 0x40], esi
jmp 0x402838
mov eax, dword [esp + 0x44]
mov cl, byte [esp + 0x37]
mov dword [esp + 0x48], eax
test cl, 1
jne 0x402910
jmp 0x402936
mov eax, dword [esp + 0x48]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x30]
add eax, 0x24
mov dword [esp + 0x4c], eax
cmp dword [esp + 0x38], 0x27145c9
jb 0x4028c8
jmp 0x402801
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
not ecx
mov edx, dword [esp + 0x1c]
not edx
mov eax, dword [eax]
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x48], 0
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x64], ecx
mov edx, dword [esp + 0xc]
cmp eax, edx
je 0x402910
jmp 0x402838
mov eax, dword [esp + 0x14]
xor eax, 0x5b6e3f4c
mov cx, word [esp + 0x54]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x50]
add cx, 0x1e40
mov word [esp + 0x56], 0x7046
mov edx, dword [esp + 0x28]
mov dword [esp + 0x64], 0x665cdf35
mov si, word [edx + eax*2]
mov di, si
add di, cx
mov word [esp + 0x56], 0xb443
mov cx, word [esp + 0x54]
mov bx, si
add bx, 0x20
add cx, 0x1e81
mov word [esp + 0x56], 0x3f0
mov edx, dword [esp + 0x14]
imul edx, edx, 0x57a244e8
cmp di, 0x1a
cmovb si, bx
mov dword [esp + 0x64], edx
mov dl, byte [esp + 0xb]
sub dl, dl
mov edi, dword [esp + 0x20]
mov bx, word [edi + eax*2]
mov byte [esp + 0x6b], dl
cmp bx, si
sete dl
mov edi, dword [esp + 0x14]
add edi, 0x2d496786
mov dword [esp + 0x64], edi
and dl, 1
mov byte [esp + 0x37], dl
mov dl, byte [esp + 0x37]
cmp si, cx
setne dh
and dl, dh
mov edi, dword [esp + 0x3c]
add eax, 1
cmp eax, edi
setb dh
and dl, dh
mov dword [esp + 0x50], eax
test dl, 1
jne 0x402971
jmp 0x4028fd
mov eax, dword [esp + 0x60]
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0x239c4d6e
xor eax, 0x6f0f8f87
mov dword [esp + 0x50], eax
jmp 0x402971