Function at 0x40d9c0
Capabilities:
Encode data using base64

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov esi, ecx
mov ecx, 1
mov eax, 1
xchg dword [esi + 0x40], eax
test eax, eax
je 0x40d9e2
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
lock cmpxchg dword [0x4401b4], ecx
jne 0x40da0a
mov dword [0x4401b8], str.rvvm.c_611
mov eax, dword [esi + 0x44]
test eax, eax
je 0x40da20
cmp dword [esi + 0x20], 0
jne 0x40da31
jmp 0x40de98
mov ecx, 0x4401b4
mov edx, str.rvvm.c_611
call fcn.0040f5ee
mov eax, dword [esi + 0x44]
test eax, eax
jne 0x40d9ff
mov ecx, esi
call fcn.0040df40
cmp dword [esi + 0x20], 0
je 0x40de98
xor ebx, ebx
jmp 0x40da8c
mov eax, dword [0x456358]
cmp eax, 2
jne 0x40de23
push str.Failed_to_allocate_WX_RVJIT_heap_
call fcn.00410c10
add esp, 4
mov byte [ebp + 0x35a8], 0
mov eax, dword [ebp + 0x3228]
pxor xmm0, xmm0
movq qword [eax + 0x98], xmm0
push str.RVJIT_failed_to_initialize__falling_back_to_interpreter
call fcn.00410c10
add esp, 4
nop word cs:[eax + eax]
inc ebx
mov eax, dword [esi + 0x20]
cmp ebx, eax
jae 0x40de65
mov eax, dword [esi + 0x18]
mov ebp, dword [eax + ebx*4]
cmp byte [ebp + 0x35a8], 0
jne 0x40da80
mov eax, dword [ebp + 0x3228]
movq xmm0, qword [eax + 0x98]
movd ecx, xmm0
pshufd xmm0, xmm0, 0x55
movd edx, xmm0
or edx, ecx
je 0x40da80
movq xmm0, qword [eax + 0xa0]
cmp dword [ebp + 0x33b0], 0
jne 0x40dcd8
movd dword [esp], xmm0
mov eax, dword [0x440164]
mov dword [esp + 8], eax
test eax, eax
jle 0x40dbc9
mov eax, dword [0x440168]
mov dword [esp + 4], eax
mov edi, dword [eax]
test edi, edi
je 0x40dbc9
mov cl, 1
mov edx, 1
nop
cmp byte [edi], 0x2d
jne 0x40dbb0
xor eax, eax
cmp byte [edi + 1], 0x2d
sete al
cmp byte [edi + eax + 1], 0x72
jne 0x40dbb0
inc eax
cmp byte [edi + eax + 1], 0x76
jne 0x40dbb0
cmp byte [edi + eax + 2], 0x6a
jne 0x40dbb0
cmp byte [edi + eax + 3], 0x69
jne 0x40dbb0
cmp byte [edi + eax + 4], 0x74
jne 0x40dbb0
cmp byte [edi + eax + 5], 0x5f
jne 0x40dbb0
cmp byte [edi + eax + 6], 0x64
jne 0x40dbb0
cmp byte [edi + eax + 7], 0x69
jne 0x40dbb0
cmp byte [edi + eax + 8], 0x73
jne 0x40dbb0
cmp byte [edi + eax + 9], 0x61
jne 0x40dbb0
cmp byte [edi + eax + 0xa], 0x62
jne 0x40dbb0
cmp byte [edi + eax + 0xb], 0x6c
jne 0x40dbb0
cmp byte [edi + eax + 0xc], 0x65
jne 0x40dbb0
cmp byte [edi + eax + 0xd], 0x5f
jne 0x40dbb0
cmp byte [edi + eax + 0xe], 0x72
jne 0x40dbb0
cmp byte [edi + eax + 0xf], 0x77
jne 0x40dbb0
cmp byte [edi + eax + 0x10], 0x78
jne 0x40dbb0
movzx eax, byte [edi + eax + 0x11]
test eax, eax
je 0x40de52
cmp eax, 0x3d
je 0x40de52
nop dword [eax]
cmp dword [esp + 8], edx
je 0x40dbc9
setg cl
mov eax, dword [esp + 4]
mov edi, dword [eax + edx*4]
inc edx
test edi, edi
jne 0x40db00
xor ecx, ecx
mov edi, dword [esp]
mov edx, edi
push 7
call fcn.00411790
add esp, 4
mov dword [ebp + 0x33b0], eax
mov dword [ebp + 0x33b4], eax
test eax, eax
jne 0x40dc08
mov eax, str.Failed_to_allocate_RWX_RVJIT_heap__falling_back_to_WX_multi_mmap
push eax
call fcn.00410a40
add esp, 4
cmp dword [ebp + 0x33b0], 0
mov edi, dword [esp]
je 0x40da35
mov dword [ebp + 0x33f4], 0x400
push 0x400
call sub.MSVCR70.dll_malloc
add esp, 4
test eax, eax
je 0x40df27
mov dword [ebp + 0x33ec], eax
mov dword [ebp + 0x33bc], edi
mov dword [ebp + 0x33b8], 0
mov byte [ebp + 0x35a4], 0
mov dword [ebp + 0x33c8], 0
mov dword [ebp + 0x33cc], 0
mov dword [ebp + 0x33c4], 0x3f
push 8
push 0x40
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x40df27
mov dword [ebp + 0x33c0], eax
mov dword [ebp + 0x33d8], 0
mov dword [ebp + 0x33dc], 0
mov dword [ebp + 0x33d4], 0x3f
push 8
push 0x40
call sub.MSVCR70.dll_calloc
add esp, 8
test eax, eax
je 0x40df27
mov dword [ebp + 0x33d0], eax
mov dword [ebp + 0x33f8], 0
mov dword [ebp + 0x33fc], 0
mov dword [ebp + 0x3400], 0
mov eax, dword [ebp + 0x3228]
mov byte [ebp + 0x35a8], 1
mov byte [ebp + 0x35a4], 0
movq xmm0, qword [eax + 0xa8]
movd eax, xmm0
pshufd xmm0, xmm0, 0x55
movd ecx, xmm0
or ecx, eax
jne 0x40da80
mov edi, dword [ebp + 0x3218]
mov eax, 0x1ffff
add edi, eax
push dword [ebp + 0x33e4]
call sub.MSVCR70.dll_free
add esp, 4
mov dword [ebp + 0x33e4], 0
push dword [ebp + 0x33e0]
call sub.MSVCR70.dll_free
add esp, 4
mov dword [ebp + 0x33e0], 0
shr edi, 0x11
lea eax, [edi - 1]
test edi, eax
je 0x40dd9e
add edi, 0xffffffff
mov ecx, 0
adc ecx, 0xffffffff
mov edx, ecx
mov eax, ecx
shld eax, edi, 0x1f
shr edx, 1
or edx, ecx
or eax, edi
mov ecx, edx
shr ecx, 2
or ecx, edx
shld edx, eax, 0x1e
or edx, eax
mov edi, ecx
shr edi, 4
or edi, ecx
shld ecx, edx, 0x1c
or ecx, edx
mov eax, edi
shr eax, 8
or eax, edi
mov edx, edi
shld edx, ecx, 0x18
or edx, ecx
mov ecx, eax
mov edi, eax
shld edi, edx, 0x10
shr ecx, 0x10
or ecx, eax
or edi, edx
or edi, ecx
inc edi
lea eax, [edi - 1]
mov dword [ebp + 0x33e8], eax
push 4
push edi
call sub.MSVCR70.dll_calloc
add esp, 8
cmp edi, 1
jb 0x40ddef
test eax, eax
je 0x40df27
mov dword [ebp + 0x33e4], eax
mov edi, dword [ebp + 0x33e8]
lea eax, [edi + 1]
push 4
push eax
call sub.MSVCR70.dll_calloc
add esp, 8
inc edi
je 0x40de09
test eax, eax
je 0x40df27
mov dword [ebp + 0x33e0], eax
jmp 0x40da80
push str.Suspicious_0_byte_allocation
mov edi, eax
call fcn.00410c10
mov eax, edi
add esp, 4
test eax, eax
jne 0x40ddbf
jmp 0x40df27
push str.Suspicious_0_byte_allocation
mov edi, eax
call fcn.00410c10
mov eax, edi
add esp, 4
test eax, eax
jne 0x40dde4
jmp 0x40df27
xor eax, eax
mov ecx, 1
lock cmpxchg dword [0x456358], ecx
jne 0x40de43
call fcn.004118f0
mov dword [0x456358], 2
mov ecx, 0x456358
call fcn.00410d70
jmp 0x40da43
mov eax, str.RWX_disabled__allocating_WX_multi_mmap_RVJIT_heap
test cl, 1
je 0x40dbc9
jmp 0x40dbef
test eax, eax
je 0x40de98
xor ebx, ebx
nop dword [eax + eax]
mov eax, dword [esi + 0x18]
mov edi, dword [eax + ebx*4]
mov dword [edi + 0x35e0], 0
mov ecx, 0x40ab00
mov edx, edi
call fcn.0040fc20
mov dword [edi + 0x35ac], eax
inc ebx
cmp ebx, dword [esi + 0x20]
jb 0x40de70
mov ecx, dword [0x4401c4]
mov edx, dword [0x4401c0]
cmp ecx, edx
mov eax, dword [0x4401bc]
jb 0x40dee1
mov ecx, edx
shr ecx, 1
add ecx, edx
mov edi, 2
cmovne edi, ecx
mov dword [0x4401c0], edi
shl edi, 2
push edi
push eax
call sub.MSVCR70.dll_realloc
add esp, 8
test edi, edi
je 0x40df12
test eax, eax
je 0x40df27
mov dword [0x4401bc], eax
mov ecx, dword [0x4401c4]
lea edx, [ecx + 1]
mov dword [0x4401c4], edx
mov dword [eax + ecx*4], esi
xor edx, edx
xchg dword [0x4401b4], edx
cmp edx, 1
jne 0x40df06
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
jmp fcn.0040e420
mov ecx, 0x4401b4
call fcn.0040f821
jmp 0x40defa
push str.Suspicious_0_byte_allocation
mov edi, eax
call fcn.00410c10
mov eax, edi
add esp, 4
test eax, eax
jne 0x40ded6
push str.Out_of_memory_
call fcn.00410c90
int3