Function at 0x401840
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
push edx
mov edx, dword [ebp - 0x18]
sub edx, esi
and edx, 0x4d
pop edx
and esp, 0xfffffff8
add ebx, 0x2b
add edi, 0x27
sub edi, 0x27
sub ebx, 0x2b
sub esp, 0x958
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov edi, 5
lea ebx, [esp + 0x67]
push ebx
add ebx, edx
sub ebx, 0x1c
xor ebx, dword [ebp - 0xc]
mov ebx, esi
and ebx, eax
pop ebx
mov dword [esp + 0x930], edx
mov dword [esp + 0x92c], esi
mov dword [esp + 0x928], ecx
add edi, 0x5c
add ebx, 0x45
add edi, 0x3d
push ecx
pop ecx
sub edi, 0x3d
sub ebx, 0x45
sub edi, 0x5c
mov dword [esp + 0x924], eax
mov dword [esp + 0x920], 0
push edi
push ecx
add ecx, dword [ebp - 0xc]
add ecx, dword [ebp - 0x14]
and ecx, 0x49
or ecx, eax
mov ecx, dword [ebp - 0x14]
pop ecx
mov edi, dword [ebp - 0xc]
pop edi
mov dword [esp + 0x91c], 0
push eax
sar eax, 0x15
or eax, 0x21
xor eax, ebx
pop eax
mov dword [esp + 0x88c], 0xd
mov dword [esp + 0x888], 0
push ecx
xor ecx, dword [ebp - 0xc]
add ecx, dword [ebp - 0x14]
and ecx, edx
xor ecx, dword [ebp - 0x18]
pop ecx
mov dword [esp + 0x880], 0
mov dword [esp + 0x87c], 0x400
push esi
sub esi, 2
xor esi, ecx
xor esi, dword [ebp - 0x10]
pop esi
mov dword [esp + 0x870], 0xffffffff
mov eax, dword [esp + 0x924]
add edx, 0x2f
push edi
pop edi
sub edx, 0x2f
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
mov dword [esp + 0x60], edi
push edx
mov edx, dword [ebp - 0x10]
add edx, 0x30
add ebx, 0x29
sub ebx, 0x29
sub edx, 0x30
or edx, dword [ebp - 0xc]
or edx, 0x30
pop edx
call fcn.00403320
mov ecx, 5
lea edx, [esp + 0x890]
lea esi, [esp + 0x67]
mov dword [esp], edx
mov dword [esp + 4], esi
mov dword [esp + 8], 5
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], ecx
push edi
and edi, eax
mov edi, eax
pop edi
call fcn.00403430
add ecx, 0x1c
nop
sub ecx, 0x1c
cmp eax, 0
je 0x401a0d
jmp 0x4023a2
push eax
or eax, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
or eax, 0x63
or eax, esi
sub eax, esi
pop eax
mov eax, 0
push edx
and edx, ebx
xor edx, ecx
xor edx, ecx
pop edx
mov ecx, 0x300
mov edx, dword [esp + 0x890]
push edx
or edx, dword [ebp - 0x18]
add edx, ebx
and edx, dword [ebp - 0x10]
sub edx, edi
xor edx, dword [ebp - 0xc]
pop edx
mov esi, dword [esp + 0x894]
mov edi, eax
sub edi, edx
mov edx, eax
sub edx, esi
add ecx, 0x41
sub ecx, 0x41
add edi, edx
mov edx, eax
push ebx
pop ebx
sub edx, edi
mov dword [esp + 0x54], ecx
mov ecx, edx
mov edx, dword [esp + 0x54]
shl edx, cl
add edx, 0x16
nop
sub edx, 0x16
mov esi, eax
sub esi, 0x736
mov edi, eax
add edx, 0x61
push edi
sub edi, edx
or edi, dword [ebp - 0x18]
pop edi
sub edx, 0x61
sub edi, edx
add esi, edi
sub eax, esi
shl eax, 1
push edx
and edx, ecx
and edx, ebx
or edx, dword [ebp - 0x18]
or edx, dword [ebp - 8]
pop edx
mov dword [esp], eax
add ebx, 0x47
sub ebx, 0x47
call fcn.0040625c
mov edx, 0xd62cdf0f
mov esi, 0x300
mov edi, 0
mov dword [esp + 0x8a0], eax
mov eax, dword [esp + 0x890]
add ecx, 0x5e
add esi, 0x41
push ecx
pop ecx
sub esi, 0x41
sub ecx, 0x5e
mov ebx, dword [esp + 0x894]
mov ecx, edi
sub ecx, eax
mov eax, edi
sub eax, ebx
add ecx, eax
sub edi, ecx
mov ecx, edi
shl esi, cl
add edx, 0x736
add edx, esi
sub edx, 0xd62cdf0f
shl edx, 1
mov eax, dword [esp + 0x8a0]
mov dword [esp + 0x940], edx
mov dword [esp + 0x93c], eax
mov eax, dword [esp + 0x93c]
mov dword [esp + 0x938], eax
mov dword [esp + 0x934], 0xff120b60
mov eax, dword [esp + 0x934]
mov ecx, eax
push esi
add esi, edx
xor esi, ecx
pop esi
sub ecx, 0xaec482c8
mov dword [esp + 0x50], eax
mov dword [esp + 0x4c], ecx
je 0x401c5f
jmp 0x401b7e
mov eax, dword [esp + 0x50]
sub eax, 0xf73386c5
mov dword [esp + 0x48], eax
je 0x401be5
jmp 0x401b96
mov eax, dword [esp + 0x50]
sub eax, 0xff120b60
mov dword [esp + 0x44], eax
je 0x401bb3
jmp 0x401bae
jmp 0x401c5a
mov eax, 0xaec482c8
mov ecx, 0xf73386c5
add esi, 0x4b
push esi
pop esi
sub esi, 0x4b
cmp dword [esp + 0x940], 0
cmovne eax, ecx
mov dword [esp + 0x934], eax
jmp 0x401c5a
mov eax, dword [esp + 0x938]
add edx, 0x33
add ebx, 0x19
push edi
mov edi, esi
xor edi, dword [ebp - 0x14]
xor edi, esi
mov edi, dword [ebp - 0xc]
pop edi
sub ebx, 0x19
sub edx, 0x33
mov byte [eax], 0
mov eax, dword [esp + 0x938]
add eax, 1
add ecx, 3
sub ecx, 3
mov dword [esp + 0x938], eax
mov eax, dword [esp + 0x940]
add eax, 0xc4d1457f
add eax, 0xffffffff
sub eax, 0xc4d1457f
mov dword [esp + 0x940], eax
mov dword [esp + 0x934], 0xff120b60
jmp 0x401b56
cmp dword [esp + 0x8a0], 0
jne 0x401c75
jmp 0x4023a2
cmp dword [esp + 0x89c], 0
je 0x401e45
mov eax, dword [esp + 0x89c]
shl eax, 0
mov dword [esp], eax
push ebx
sub ebx, ecx
xor ebx, esi
and ebx, dword [ebp - 0xc]
pop ebx
call fcn.0040625c
mov dword [esp + 0x8a4], eax
mov eax, dword [esp + 0x89c]
shl eax, 0
mov ecx, dword [esp + 0x8a4]
mov dword [esp + 0x950], eax
mov dword [esp + 0x94c], ecx
mov eax, dword [esp + 0x94c]
mov dword [esp + 0x948], eax
mov dword [esp + 0x944], 0xff120b60
add ecx, 1
add edi, 0x39
push edi
shl edi, 0x30
mov edi, dword [ebp - 0x10]
sub edi, eax
add edi, eax
pop edi
sub edi, 0x39
sub ecx, 1
mov eax, dword [esp + 0x944]
mov ecx, eax
sub ecx, 0xaec482c8
mov dword [esp + 0x40], eax
mov dword [esp + 0x3c], ecx
je 0x401e0e
jmp 0x401d26
push eax
add eax, dword [ebp - 0x10]
and eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
pop eax
mov eax, dword [esp + 0x40]
sub eax, 0xf73386c5
mov dword [esp + 0x38], eax
je 0x401da2
jmp 0x401d49
push eax
sub eax, dword [ebp - 0x14]
sub eax, ebx
sub eax, dword [ebp - 0x14]
and eax, edx
pop eax
mov eax, dword [esp + 0x40]
sub eax, 0xff120b60
mov dword [esp + 0x34], eax
je 0x401d72
jmp 0x401d6d
jmp 0x401e09
add eax, 0xa
sub eax, 0xa
mov eax, 0xaec482c8
mov ecx, 0xf73386c5
cmp dword [esp + 0x950], 0
cmovne eax, ecx
mov dword [esp + 0x944], eax
jmp 0x401e09
mov eax, dword [esp + 0x948]
mov byte [eax], 0
push esi
sub esi, edi
xor esi, 0
or esi, edx
or esi, ecx
pop esi
mov eax, dword [esp + 0x948]
add eax, 1
mov dword [esp + 0x948], eax
push edx
add edx, dword [ebp - 0x14]
or edx, dword [ebp - 0x10]
pop edx
mov eax, dword [esp + 0x950]
add edi, 0x5c
sub edi, 0x5c
sub eax, 0xde64625a
add eax, 0xffffffff
add eax, 0xde64625a
mov dword [esp + 0x950], eax
mov dword [esp + 0x944], 0xff120b60
jmp 0x401ce0
add ecx, 0x1b
push esi
add esi, dword [ebp - 0x14]
sar esi, 0x60
xor esi, dword [ebp - 8]
sub esi, dword [ebp - 8]
add esi, edx
pop esi
sub ecx, 0x1b
cmp dword [esp + 0x8a4], 0
jne 0x401e40
jmp 0x4023a2
jmp 0x401e50
mov dword [esp + 0x8a4], 0
mov eax, 0
lea ecx, [esp + 0x6c]
mov dword [esp + 0x91c], ecx
add eax, 0x51
nop
sub eax, 0x51
mov ecx, dword [esp + 0x928]
sub eax, 0xd
add edi, 0x24
push edx
add edx, dword [ebp - 0x14]
sar edx, 0x25
add edx, ecx
nop
add edx, eax
pop edx
sub edi, 0x24
add ecx, eax
mov dword [esp + 0x928], ecx
mov dword [esp + 0x914], 0xfffffffe
mov dword [esp + 0x8e8], 0
push edi
or edi, eax
and edi, dword [ebp - 0xc]
shr edi, 0x18
pop edi
cmp dword [esp + 0x880], 0
jne 0x401fed
add ebx, 0x3f
sub ebx, 0x3f
cmp dword [esp + 0x928], 0
je 0x401fed
mov dword [esp + 0x884], 0x400
mov eax, dword [esp + 0x884]
cmp eax, dword [esp + 0x928]
jbe 0x401f16
mov eax, dword [esp + 0x928]
mov dword [esp + 0x884], eax
lea eax, [esp + 0x46c]
mov ecx, dword [esp + 0x884]
add esi, 0x51
push ecx
add ecx, dword [ebp - 0x18]
add ecx, esi
add ecx, edx
pop ecx
sub esi, 0x51
mov edx, dword [esp + 0x924]
add edx, dword [esp + 0x88c]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
call fcn.00403320
lea ecx, [esp + 0x46c]
mov edx, 0
push edx
xor edx, dword [ebp - 0x18]
or edx, dword [ebp - 0xc]
and edx, dword [ebp - 0x14]
add edx, 0x11
mov edx, dword [ebp - 0x18]
pop edx
mov esi, dword [esp + 0x884]
mov edi, dword [esp + 0x88c]
add edi, 0x6f52080e
push edx
xor edx, 0x3a
or edx, ecx
or edx, ecx
add edx, esi
xor edx, dword [ebp - 0xc]
pop edx
add edi, esi
push ecx
pop ecx
sub edi, 0x6f52080e
mov dword [esp + 0x88c], edi
mov esi, dword [esp + 0x884]
push ebx
pop ebx
mov edi, dword [esp + 0x928]
add ebx, 0x14
sub ebx, 0x14
sub edx, esi
add edi, edx
mov dword [esp + 0x928], edi
mov edx, dword [esp + 0x884]
mov dword [esp + 0x880], edx
mov dword [esp + 0x920], ecx
mov dword [esp + 0x30], eax
lea eax, [esp + 0x890]
lea ecx, [esp + 0x878]
lea edx, [esp + 0x874]
cmp dword [esp + 0x880], 0
sete bl
and bl, 1
movzx esi, bl
mov edi, dword [esp + 0x87c]
push ebx
and ebx, edx
mov ebx, eax
pop ebx
mov ebx, dword [esp + 0x91c]
mov dword [esp + 0x2c], eax
push edi
add edi, eax
sub edi, dword [ebp - 0x10]
pop edi
mov eax, dword [esp + 0x880]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x920]
push ecx
xor ecx, ebx
or ecx, edx
or ecx, eax
pop ecx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
push ecx
sub ecx, dword [ebp - 0x10]
push ecx
or ecx, edi
or ecx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x18]
pop ecx
add ecx, dword [ebp - 8]
sub ecx, edx
pop ecx
mov eax, dword [esp + 0x24]
nop
mov dword [esp + 4], eax
add ebx, 3
add edx, 0x1e
sub edx, 0x1e
sub ebx, 3
mov eax, dword [esp + 0x28]
mov dword [esp + 8], eax
push edx
pop edx
mov dword [esp + 0xc], ecx
add esi, 2
sub esi, 2
mov dword [esp + 0x10], ebx
add ecx, 0x63
push edx
pop edx
sub ecx, 0x63
mov dword [esp + 0x14], edi
add edi, 0x3d
push edi
xor edi, dword [ebp - 8]
xor edi, dword [ebp - 0x10]
mov edi, eax
or edi, dword [ebp - 0x10]
sub edi, dword [ebp - 8]
pop edi
sub edi, 0x3d
mov dword [esp + 0x18], edx
add esi, 0x2e
add ebx, 0x5a
sub ebx, 0x5a
sub esi, 0x2e
mov dword [esp + 0x1c], esi
call fcn.00403590
mov ecx, 0
mov dword [esp + 0x86c], eax
add ecx, 0x45
push edi
xor edi, ebx
push eax
add ecx, 0x41
add edi, 0x32
add edi, 0x21
add eax, 0x32
add ecx, 0xb
sub ecx, 0xb
sub eax, 0x32
sub edi, 0x21
sub edi, 0x32
sub ecx, 0x41
add ecx, 3
push ebx
mov ebx, edx
mov ebx, dword [ebp - 0xc]
sub ebx, edx
mov ebx, dword [ebp - 0x10]
pop ebx
sub ecx, 3
xor eax, ebx
pop eax
or edi, dword [ebp - 8]
pop edi
sub ecx, 0x45
mov eax, dword [esp + 0x878]
mov edx, dword [esp + 0x880]
sub ecx, eax
add eax, 0x58
add ecx, 0x3d
nop
sub ecx, 0x3d
sub eax, 0x58
add edx, ecx
mov dword [esp + 0x880], edx
mov eax, dword [esp + 0x878]
mov ecx, dword [esp + 0x920]
add ecx, eax
push edi
pop edi
mov dword [esp + 0x920], ecx
mov eax, dword [esp + 0x874]
mov ecx, dword [esp + 0x87c]
push eax
pop eax
sub ecx, 0x88149753
sub ecx, eax
add ecx, 0x88149753
push edi
or edi, dword [ebp - 0x18]
and edi, ecx
mov edi, eax
push edi
pop edi
add edi, 0xa
pop edi
mov dword [esp + 0x87c], ecx
mov eax, dword [esp + 0x874]
add edx, 0x58
push edi
pop edi
sub edx, 0x58
mov ecx, dword [esp + 0x91c]
add ebx, 0x3d
sub ebx, 0x3d
add ecx, eax
mov dword [esp + 0x91c], ecx
cmp dword [esp + 0x87c], 0
jne 0x40234f
mov dword [esp + 0x884], 0x400
push ebx
sub ebx, 0x37
add ebx, ecx
and ebx, dword [ebp - 0xc]
or ebx, esi
or ebx, esi
pop ebx
mov eax, dword [esp + 0x884]
push esi
pop esi
cmp eax, dword [esp + 0x930]
jbe 0x40227a
mov eax, dword [esp + 0x930]
mov dword [esp + 0x884], eax
lea eax, [esp + 0x6c]
mov ecx, dword [esp + 0x884]
mov edx, dword [esp + 0x92c]
add edx, dword [esp + 0x888]
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.00403320
add ebx, 0x5e
sub ebx, 0x5e
mov ecx, 0
mov edx, dword [esp + 0x884]
mov esi, dword [esp + 0x888]
push esi
pop esi
sub esi, 0x8f4a64cc
add esi, edx
add esi, 0x8f4a64cc
mov dword [esp + 0x888], esi
mov edx, dword [esp + 0x884]
add edx, 0x23
sub edx, 0x23
mov esi, dword [esp + 0x930]
push ecx
and ecx, dword [ebp - 0xc]
or ecx, edx
pop ecx
sub ecx, edx
add esi, ecx
mov dword [esp + 0x930], esi
push eax
pop eax
mov dword [esp + 0x87c], 0x400
mov ecx, dword [esp + 0x87c]
add ebx, 0x58
sub ebx, 0x58
cmp ecx, dword [esp + 0x930]
mov dword [esp + 0x20], eax
jbe 0x402344
mov eax, dword [esp + 0x930]
mov dword [esp + 0x87c], eax
lea eax, [esp + 0x6c]
mov dword [esp + 0x91c], eax
push eax
shl eax, 0x2e
sub eax, dword [ebp - 0x14]
shr eax, 0x56
sar eax, 0x61
pop eax
cmp dword [esp + 0x86c], 0
je 0x402373
jmp 0x4023a2
jmp 0x402378
add eax, 0x4f
push ecx
pop ecx
sub eax, 0x4f
cmp dword [esp + 0x87c], 0
jne 0x401eb1
mov dword [esp + 0x870], 0
mov eax, dword [esp + 0x870]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret