Function at 0x51eca0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov edi, ecx
mov eax, dword [0x567b10]
xor eax, esp
mov dword [esp + 0x20], eax
mov esi, dword [ecx]
lea eax, [esi + 5]
cmp eax, dword [ecx + 4]
jae 0x51ecf0
push 6
push 0x561240
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
test eax, eax
je 0x51eee6
push 6
push str._:_:__
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
test eax, eax
je 0x51ef7b
mov eax, dword [edi + 0x1c]
mov ebx, dword [eax + 0xc]
lea ecx, [ebx + 1]
mov dword [eax + 0xc], ecx
mov eax, edi
mov edi, dword [edi + 0x18]
mov ecx, dword [eax + 0x1c]
mov ebp, dword [ecx + 8]
cmp ebx, edi
mov dword [esp + 0xc], eax
jge 0x51ed96
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x51ee93
mov ecx, dword [ecx + 0x14]
test ecx, ecx
je 0x51ee93
mov edi, ebx
shl edi, 4
lea esi, [ebx + 7]
test ebx, ebx
cmovns esi, ebx
sar esi, 3
imul ebp, esi
add ecx, ebp
mov dword [eax + edi], ecx
and bl, 7
mov edx, 1
mov ecx, ebx
shl edx, cl
mov byte [eax + edi + 4], dl
mov byte [eax + edi + 5], 0
mov dword [eax + edi + 8], 0
mov dword [esp + 4], edi
mov dword [eax + edi + 0xc], 0
mov edi, dword [esp + 0xc]
mov ecx, dword [edi]
mov esi, dword [edi + 4]
cmp ecx, esi
jae 0x51ef39
cmp byte [ecx], 0x5e
jne 0x51ef39
add ecx, 1
mov dword [edi], ecx
mov dword [esp + 0x10], 0
jmp 0x51ef3f
add edi, 8
mov dword [eax + 0x18], edi
cmp edi, 0xfffffff
ja 0x51ee93
mov eax, edi
shl eax, 4
push eax
push dword [ecx + 0x10]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
add esp, 8
test eax, eax
je 0x51ee93
shr edi, 3
imul edi, ebp
mov edx, dword [esp + 0xc]
mov ecx, dword [edx + 0x1c]
mov dword [ecx + 0x10], eax
mov eax, dword [edx + 0x1c]
push edi
push dword [eax + 0x14]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
add esp, 8
test eax, eax
je 0x51ee93
mov edx, ebx
mov ebx, dword [esp + 0xc]
mov ecx, dword [ebx + 0x1c]
mov dword [ecx + 0x14], eax
mov dword [esp + 4], edx
test edx, edx
jle 0x51ee73
mov dword [esp], edi
xor esi, esi
cmp dword [esp + 4], 1
mov edi, ebp
je 0x51ee50
mov eax, dword [esp + 4]
and eax, 0xfffffffe
mov dword [esp + 8], eax
xor edx, edx
xor esi, esi
nop dword [eax + eax]
mov ebp, dword [ebx + 0x1c]
mov eax, esi
shr eax, 3
imul eax, edi
mov ecx, dword [ebp + 0x14]
add ecx, eax
mov ebp, dword [ebp + 0x10]
mov dword [ebp + edx], ecx
mov ecx, dword [ebx + 0x1c]
add eax, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x10]
mov dword [ecx + edx + 0x10], eax
add esi, 2
add edx, 0x20
cmp dword [esp + 8], esi
jne 0x51ee20
test byte [esp + 4], 1
mov ebp, edi
mov edi, dword [esp]
je 0x51ee73
mov eax, dword [ebx + 0x1c]
mov ecx, esi
shr ecx, 3
imul ecx, ebp
add ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x10]
shl esi, 4
mov dword [eax + esi], ecx
mov eax, dword [ebx + 0x1c]
sub edi, ebp
add edi, dword [eax + 0x14]
push ebp
push 0
push edi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov ecx, dword [ebx + 0x1c]
mov ebx, dword [esp + 4]
jmp 0x51ed13
mov edi, dword [esp + 0xc]
mov eax, dword [edi + 0x1c]
mov esi, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
push dword [eax + 0x10]
call esi
add esp, 4
mov eax, dword [edi + 0x1c]
mov dword [eax + 0x10], 0
mov eax, dword [edi + 0x1c]
push dword [eax + 0x14]
call esi
add esp, 4
mov eax, dword [edi + 0x1c]
mov dword [eax + 0x14], 0
cmp dword [edi + 8], 0
jne 0x51eed4
mov dword [edi + 8], 0xc
mov dword [edi], 0x569f8c
mov dword [edi + 4], 0x569f8c
jmp 0x51faad
cmp dword [edi + 8], 0
jne 0x51f838
mov ecx, dword [edi + 0x10]
cmp dword [edi + 0x14], ecx
jl 0x51f7ed
lea eax, [ecx + 1]
shr eax, 0x1f
add eax, ecx
add eax, 1
sar eax, 1
lea esi, [eax + eax*2]
cmp ecx, esi
jge 0x51f7ed
cmp esi, 0x40000000
jb 0x51f7cc
mov dword [edi + 8], 0xc
mov dword [edi], 0x569f8c
mov dword [edi + 4], 0x569f8c
jmp 0x51f7ed
mov dl, 1
mov dword [esp + 0x10], edx
mov ebx, dword [esp + 4]
lea edx, [eax + ebx]
mov dword [esp + 8], edx
lea ebp, [eax + ebx]
add ebp, 4
cmp ecx, esi
jae 0x51efe3
mov bl, byte [ecx]
cmp bl, 0x2d
je 0x51efce
cmp bl, 0x5d
jne 0x51efe3
add ecx, 1
mov dword [edi], ecx
mov cl, byte [ebp]
mov edx, dword [esp + 8]
mov edx, dword [edx]
or byte [edx + 0x5d], cl
add byte [ebp + 1], 0x5d
jmp 0x51efe3
cmp dword [edi + 8], 0
jne 0x51f838
mov ecx, dword [edi + 0x10]
cmp dword [edi + 0x14], ecx
jl 0x51f823
lea eax, [ecx + 1]
shr eax, 0x1f
add eax, ecx
add eax, 1
sar eax, 1
lea esi, [eax + eax*2]
cmp ecx, esi
jge 0x51f823
cmp esi, 0x40000000
jb 0x51f802
mov dword [edi + 8], 0xc
mov dword [edi], 0x569f8c
mov dword [edi + 4], 0x569f8c
jmp 0x51f823
add ecx, 1
mov dword [edi], ecx
mov cl, byte [ebp]
mov edx, dword [esp + 8]
mov edx, dword [edx]
or byte [edx + 0x2d], cl
add byte [ebp + 1], 0x2d
mov ebx, dword [edi]
mov esi, dword [edi + 4]
cmp ebx, esi
jae 0x51f675
mov ecx, dword [esp + 4]
add eax, ecx
add eax, 8
mov dword [esp + 0x14], eax
lea eax, [edi + 8]
mov dword [esp], eax
jmp 0x51f021
mov edi, dword [esp + 0xc]
mov ebx, dword [edi]
mov esi, dword [edi + 4]
cmp ebx, esi
jae 0x51f675
movsx ecx, byte [ebx]
cmp ecx, 0x5d
je 0x51f675
lea eax, [ebx + 1]
cmp eax, esi
jae 0x51f03d
cmp cl, 0x2d
je 0x51f655
cmp ecx, 0x5b
je 0x51f0b0
cmp ecx, 0x2d
je 0x51f743
cmp eax, esi
jae 0x51f130
cmp cl, 0x5b
jne 0x51f130
cmp byte [eax], 0x2e
jne 0x51f130
add ebx, 2
mov dword [edi], ebx
mov ecx, edi
mov edx, 0x2e
call fcn.00520ae0
mov ebx, eax
mov eax, dword [edi]
mov esi, dword [edi + 4]
cmp eax, esi
jae 0x51f163
lea ecx, [eax + 1]
cmp ecx, esi
jae 0x51f163
cmp byte [eax], 0x2e
jne 0x51f163
cmp byte [ecx], 0x5d
jne 0x51f163
add eax, 2
mov dword [edi], eax
jmp 0x51f134
cmp eax, esi
jae 0x51f130
movsx edx, byte [eax]
cmp edx, 0x3d
je 0x51f21b
cmp edx, 0x3a
jne 0x51f04b
add ebx, 2
mov dword [edi], ebx
cmp ebx, esi
jb 0x51f0f3
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f0dc
mov dword [eax], 7
mov dword [edi], 0x569f8c
mov esi, 0x569f8c
mov dword [edi + 4], 0x569f8c
mov ebx, 0x569f8c
movzx eax, byte [ebx]
cmp eax, 0x5d
je 0x51f103
cmp al, 0x2d
jne 0x51f314
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f111
mov dword [eax], 4
mov dword [edi], 0x569f8c
mov ebx, 0x569f8c
mov dword [edi + 4], 0x569f8c
mov esi, 0x569f8c
jmp 0x51f354
mov dword [edi], eax
mov bl, byte [ebx]
cmp eax, esi
jae 0x51f190
lea ecx, [eax + 1]
cmp ecx, esi
jae 0x51f190
cmp byte [eax], 0x2d
jne 0x51f190
cmp byte [ecx], 0x5d
je 0x51f190
mov dword [edi], ecx
mov bh, byte [eax + 1]
lea edx, [eax + 2]
cmp bh, 0x2d
jne 0x51f2b6
mov dword [edi], edx
mov bh, 0x2d
jmp 0x51f618
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f174
mov eax, dword [esp]
mov dword [eax], 3
mov dword [edi], 0x569f8c
mov dword [edi + 4], 0x569f8c
nop word cs:[eax + eax]
nop dword [eax + eax]
mov bh, bl
mov byte [esp + 4], bh
movsx ecx, bh
movsx ebx, bl
cmp ecx, ebx
cmovle ecx, ebx
add ecx, 1
mov eax, ecx
sub eax, ebx
mov edx, ebx
test al, 1
je 0x51f1c3
mov al, byte [ebp]
mov edx, dword [esp + 8]
mov edx, dword [edx]
movzx esi, bl
or byte [edx + esi], al
add byte [ebp + 1], bl
lea edx, [ebx + 1]
cmp bl, byte [esp + 4]
mov edi, dword [esp + 8]
jge 0x51f010
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx eax, byte [ebp]
mov esi, dword [edi]
movzx ebx, dl
or byte [esi + ebx], al
movzx eax, byte [ebp + 1]
add eax, edx
mov byte [ebp + 1], al
lea eax, [edx + 1]
movzx ebx, byte [ebp]
mov esi, dword [edi]
movzx eax, al
or byte [esi + eax], bl
movzx eax, byte [ebp + 1]
add eax, edx
add al, 1
mov byte [ebp + 1], al
add edx, 2
cmp ecx, edx
jne 0x51f1e0
jmp 0x51f010
add ebx, 2
mov dword [edi], ebx
cmp ebx, esi
jb 0x51f244
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f232
mov dword [eax], 7
mov dword [edi], 0x569f8c
mov ebx, 0x569f8c
mov dword [edi + 4], 0x569f8c
mov al, byte [ebx]
cmp al, 0x5d
je 0x51f24e
cmp al, 0x2d
jne 0x51f269
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f25c
mov dword [eax], 3
mov dword [edi], 0x569f8c
mov dword [edi + 4], 0x569f8c
mov ecx, edi
mov edx, 0x3d
call fcn.00520ae0
mov cl, byte [ebp]
mov edx, dword [esp + 8]
mov edx, dword [edx]
movzx esi, al
or byte [edx + esi], cl
add byte [ebp + 1], al
mov ebx, dword [edi]
mov esi, dword [edi + 4]
cmp ebx, esi
jae 0x51f9d9
lea eax, [ebx + 1]
cmp eax, esi
jae 0x51f842
cmp byte [ebx], 0x3d
jne 0x51f842
cmp byte [eax], 0x5d
je 0x51f552
jmp 0x51f842
cmp edx, esi
jae 0x51f30b
cmp bh, 0x5b
jne 0x51f30b
cmp byte [edx], 0x2e
jne 0x51f30b
add eax, 3
mov dword [edi], eax
mov ecx, edi
mov edx, 0x2e
call fcn.00520ae0
mov bh, al
mov ecx, dword [edi]
mov esi, dword [edi + 4]
cmp ecx, esi
jae 0x51f5fa
lea edx, [ecx + 1]
cmp edx, esi
jae 0x51f5fa
cmp byte [ecx], 0x2e
jne 0x51f5fa
cmp byte [edx], 0x5d
jne 0x51f5fa
add ecx, 2
mov dword [edi], ecx
jmp 0x51f618
mov dword [edi], edx
mov bh, byte [ecx]
jmp 0x51f618
cmp ebx, esi
jae 0x51f352
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isalpha]
add esp, 4
test eax, eax
je 0x51f352
mov dword [esp + 4], esi
lea esi, [ebx + 1]
mov dword [edi], esi
cmp dword [esp + 4], esi
je 0x51f625
movzx eax, byte [esi]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isalpha]
add esp, 4
add esi, 1
test eax, eax
jne 0x51f32d
add esi, 0xffffffff
jmp 0x51f354
mov esi, ebx
sub esi, ebx
push esi
push ebx
push str.alnum
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
test eax, eax
jne 0x51f378
mov ecx, 0x561250
cmp esi, 5
je 0x51f4e6
push esi
push ebx
push str.alpha
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
cmp esi, 5
jne 0x51f39a
mov ecx, 0x56125c
test eax, eax
je 0x51f4e6
push esi
push ebx
push str.blank
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
cmp esi, 5
jne 0x51f3bc
mov ecx, 0x561268
test eax, eax
je 0x51f4e6
push esi
push ebx
push str.cntrl
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
cmp esi, 5
jne 0x51f3de
mov ecx, 0x561274
test eax, eax
je 0x51f4e6
push esi
push ebx
push str.digit
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
cmp esi, 5
jne 0x51f400
mov ecx, 0x561280
test eax, eax
je 0x51f4e6
push esi
push ebx
push str.graph
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
cmp esi, 5
jne 0x51f422
mov ecx, 0x56128c
test eax, eax
je 0x51f4e6
push esi
push ebx
push str.lower
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
cmp esi, 5
jne 0x51f444
mov ecx, 0x561298
test eax, eax
je 0x51f4e6
push esi
push ebx
push str.print
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
cmp esi, 5
jne 0x51f466
mov ecx, 0x5612a4
test eax, eax
je 0x51f4e6
push esi
push ebx
push str.punct
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
cmp esi, 5
jne 0x51f484
mov ecx, 0x5612b0
test eax, eax
je 0x51f4e6
push esi
push ebx
push str.space
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
cmp esi, 5
jne 0x51f4a2
mov ecx, 0x5612bc
test eax, eax
je 0x51f4e6
push esi
push ebx
push str.upper
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
cmp esi, 5
jne 0x51f4c0
mov ecx, 0x5612c8
test eax, eax
je 0x51f4e6
push esi
push ebx
push str.xdigit
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
add esp, 0xc
cmp esi, 6
jne 0x51f62e
mov ecx, 0x5612d4
test eax, eax
jne 0x51f62e
mov eax, dword [ecx + 4]
mov dl, byte [eax]
test dl, dl
mov edi, dword [esp + 8]
je 0x51f518
add eax, 1
nop word cs:[eax + eax]
mov dh, byte [ebp]
mov esi, dword [edi]
movzx ebx, dl
or byte [esi + ebx], dh
add byte [ebp + 1], dl
movzx edx, byte [eax]
add eax, 1
test dl, dl
jne 0x51f500
mov esi, dword [ecx + 8]
cmp byte [esi], 0
mov edi, dword [esp + 0x14]
jne 0x51f59e
mov edi, dword [esp + 0xc]
mov ebx, dword [edi]
mov esi, dword [edi + 4]
cmp ebx, esi
jae 0x51f9d9
lea eax, [ebx + 1]
cmp eax, esi
jae 0x51f859
cmp byte [ebx], 0x3a
jne 0x51f859
cmp byte [eax], 0x5d
jne 0x51f859
add ebx, 2
mov dword [edi], ebx
cmp ebx, esi
jb 0x51f021
jmp 0x51f675
mov dword [edi + 4], eax
mov ecx, dword [edi]
sub ecx, ebx
add ecx, 1
add eax, ebx
add eax, 0xffffffff
push ecx
push esi
push eax
call fcn.00523bc0
add esp, 0xc
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
cmp byte [eax + esi + 1], 0
lea esi, [eax + esi + 1]
je 0x51f524
mov ebx, dword [edi]
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
add eax, ebx
add eax, 1
mov dword [edi], eax
push eax
push dword [edi + 4]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
add esp, 8
test eax, eax
jne 0x51f570
mov eax, dword [edi + 4]
test eax, eax
je 0x51f5d2
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
mov dword [edi + 4], 0
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f5e7
mov dword [eax], 0xc
mov eax, dword [esp + 0xc]
mov dword [eax], 0x569f8c
mov dword [eax + 4], 0x569f8c
jmp 0x51f58a
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f60b
mov eax, dword [esp]
mov dword [eax], 3
mov dword [edi], 0x569f8c
mov dword [edi + 4], 0x569f8c
cmp bl, bh
jle 0x51f192
jmp 0x51f743
mov esi, dword [esp + 4]
jmp 0x51f354
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f63f
mov eax, dword [esp]
mov dword [eax], 4
mov eax, dword [esp + 0xc]
mov dword [eax], 0x569f8c
mov dword [eax + 4], 0x569f8c
jmp 0x51f524
cmp byte [eax], 0x5d
jne 0x51f743
mov dword [edi], eax
mov al, byte [ebp]
mov ecx, dword [esp + 8]
mov ecx, dword [ecx]
or byte [ecx + 0x2d], al
add byte [ebp + 1], 0x2d
mov ebx, dword [edi]
mov esi, dword [edi + 4]
cmp ebx, esi
jae 0x51f9e7
lea eax, [ebx + 1]
mov dword [edi], eax
cmp byte [ebx], 0x5d
jne 0x51f9e7
cmp dword [edi + 8], 0
jne 0x51fa01
mov eax, dword [edi + 0x1c]
test byte [eax + 0x18], 2
je 0x51f75a
mov esi, dword [eax + 8]
test esi, esi
jle 0x51f75a
add esi, 1
jmp 0x51f6be
add esi, 0xffffffff
cmp esi, 1
jle 0x51f75a
lea ecx, [esi - 2]
mov eax, dword [esp + 8]
mov eax, dword [eax]
mov dword [esp + 4], ecx
movzx ebx, cl
movzx ecx, byte [ebp]
mov dword [esp], eax
mov byte [esp + 0x14], cl
test byte [eax + ebx], cl
je 0x51f6b2
push dword [esp + 4]
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isalpha]
add esp, 4
test eax, eax
je 0x51f6b2
push ebx
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isupper]
add esp, 4
test eax, eax
je 0x51f706
push ebx
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_tolower]
jmp 0x51f721
push ebx
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_islower]
add esp, 4
mov ecx, eax
mov eax, dword [esp + 4]
test ecx, ecx
je 0x51f724
push ebx
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_toupper]
add esp, 4
movsx ecx, al
cmp dword [esp + 4], ecx
je 0x51f6b2
movzx ecx, al
mov edx, dword [esp]
movzx ebx, byte [esp + 0x14]
or byte [edx + ecx], bl
add byte [ebp + 1], al
jmp 0x51f6b2
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f9e7
mov dword [eax], 0xb
jmp 0x51f9e7
cmp byte [esp + 0x10], 0
mov ecx, dword [esp + 8]
jne 0x51f897
mov eax, dword [edi + 0x1c]
mov ebx, dword [eax + 8]
test ebx, ebx
jle 0x51f87b
lea ecx, [ebx + 1]
mov dl, 1
sub dl, bl
jmp 0x51f79f
or al, dh
mov byte [esi + ebx], al
movzx eax, byte [ebp + 1]
mov ebx, edi
add al, bl
mov byte [ebp + 1], al
add ecx, 0xffffffff
add dl, 1
cmp ecx, 1
jle 0x51f870
add ebx, 0xffffffff
lea eax, [ecx - 2]
mov esi, dword [esp + 8]
mov esi, dword [esi]
mov edi, ebx
movzx ebx, al
mov dh, byte [esi + ebx]
movzx eax, byte [ebp]
test al, dh
je 0x51f780
not al
and dh, al
mov byte [esi + ebx], dh
movzx eax, byte [ebp + 1]
add al, dl
mov ebx, edi
jmp 0x51f78d
shl eax, 2
lea eax, [eax + eax*2]
push eax
push dword [edi + 0xc]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
add esp, 8
test eax, eax
je 0x51f9ca
mov dword [edi + 0xc], eax
mov dword [edi + 0x10], esi
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x14]
lea edx, [ecx + 1]
mov dword [edi + 0x14], edx
mov dword [eax + ecx*4], 0x98000000
jmp 0x51f836
shl eax, 2
lea eax, [eax + eax*2]
push eax
push dword [edi + 0xc]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
add esp, 8
test eax, eax
je 0x51fac0
mov dword [edi + 0xc], eax
mov dword [edi + 0x10], esi
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x14]
lea edx, [ecx + 1]
mov dword [edi + 0x14], edx
mov dword [eax + ecx*4], 0xa0000000
mov esi, dword [edi]
add esi, 6
mov dword [edi], esi
jmp 0x51faad
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f9e7
mov dword [eax], 3
jmp 0x51f9e7
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f9e7
mov dword [eax], 4
jmp 0x51f9e7
mov edi, dword [esp + 0xc]
mov eax, dword [edi + 0x1c]
mov ecx, dword [esp + 8]
test byte [eax + 0x18], 8
je 0x51f897
mov al, byte [ebp]
not al
mov ecx, dword [esp + 8]
mov ecx, dword [ecx]
and byte [ecx + 0xa], al
mov ecx, dword [esp + 8]
add byte [ebp + 1], 0xf6
mov esi, dword [edi + 0x1c]
mov ebx, dword [esi + 8]
test ebx, ebx
mov dword [esp + 4], ebx
je 0x51fbfc
mov dword [esp + 0x14], esi
mov eax, dword [ecx]
mov dword [esp], eax
mov al, byte [ebp]
mov byte [esp + 0x10], al
xor esi, esi
cmp ebx, 8
jb 0x51facf
lea ecx, [ebx - 1]
mov eax, 0
cmp ecx, 0xff
mov cl, byte [esp + 0x10]
ja 0x51fb65
and ebx, 0xfffffff8
movzx ecx, cl
movd xmm0, ecx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
mov eax, ebx
lea ecx, [ebx - 8]
mov esi, ecx
shr esi, 3
add esi, 1
test ecx, ecx
mov dword [esp + 0x18], esi
je 0x51fad6
and esi, 0xfffffffe
neg esi
pxor xmm3, xmm3
xor ecx, ecx
pcmpeqd xmm4, xmm4
movdqa xmm5, xmmword [0x555bf0]
pxor xmm2, xmm2
pxor xmm1, xmm1
mov edx, dword [esp]
mov ebx, ecx
and ebx, 0xf0
movd xmm7, dword [edx + ebx]
movd xmm6, dword [edx + ebx + 4]
pand xmm7, xmm0
pand xmm6, xmm0
pcmpeqb xmm7, xmm3
pxor xmm7, xmm4
punpcklbw xmm7, xmm7
punpcklwd xmm7, xmm7
pand xmm7, xmm5
paddd xmm7, xmm2
pcmpeqb xmm6, xmm3
pxor xmm6, xmm4
punpcklbw xmm6, xmm6
punpcklwd xmm6, xmm6
pand xmm6, xmm5
paddd xmm6, xmm1
movd xmm2, dword [edx + ebx + 8]
movd xmm1, dword [edx + ebx + 0xc]
pand xmm2, xmm0
pand xmm1, xmm0
pcmpeqb xmm2, xmm3
pxor xmm2, xmm4
punpcklbw xmm2, xmm2
punpcklwd xmm2, xmm2
pand xmm2, xmm5
paddd xmm2, xmm7
pcmpeqb xmm1, xmm3
pxor xmm1, xmm4
punpcklbw xmm1, xmm1
punpcklwd xmm1, xmm1
pand xmm1, xmm5
paddd xmm1, xmm6
add ecx, 0x10
add esi, 2
jne 0x51f92a
jmp 0x51fae0
cmp dword [edi + 8], 0
jne 0x51ef27
jmp 0x51ef20
mov eax, dword [esp]
cmp dword [eax], 0
jne 0x51f9e7
mov dword [eax], 7
cmp dword [edi + 8], 0
jne 0x51f9f4
mov dword [edi + 8], 7
mov dword [edi], 0x569f8c
mov dword [edi + 4], 0x569f8c
mov ecx, dword [edi + 0x1c]
mov edx, dword [ecx + 8]
mov edi, dword [ecx + 0xc]
shl edi, 4
add edi, dword [ecx + 0x10]
test edx, edx
je 0x51fa99
mov dword [esp], edi
xor eax, eax
mov dword [esp + 4], edx
cmp edx, 1
mov edi, dword [esp + 8]
je 0x51fa7b
mov ebx, dword [esp + 4]
and ebx, 0xfffffffe
xor eax, eax
mov cl, 0xff
nop word cs:[eax + eax]
nop
mov ch, byte [ebp]
not ch
mov esi, dword [edi]
mov edx, eax
and edx, 0xfe
and byte [esi + edx], ch
movzx edx, byte [ebp + 1]
add dl, cl
add dl, 1
mov byte [ebp + 1], dl
lea edx, [eax + 1]
mov ch, byte [ebp]
not ch
mov esi, dword [edi]
movzx edx, dl
and byte [esi + edx], ch
add byte [ebp + 1], cl
add eax, 2
add cl, 0xfe
cmp ebx, eax
jne 0x51fa40
test byte [esp + 4], 1
mov edi, dword [esp]
je 0x51fa99
mov cl, byte [ebp]
not cl
mov edx, dword [esp + 8]
mov edx, dword [edx]
movzx esi, al
and byte [edx + esi], cl
sub byte [ebp + 1], al
add edi, 0xfffffff0
cmp edi, dword [esp + 8]
jne 0x51faad
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x1c]
add dword [eax + 0xc], 0xffffffff
mov ecx, dword [esp + 0x20]
xor ecx, esp
call fcn.00533ace
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [edi + 8], 0
jne 0x51efbc
jmp 0x51efb5
xor eax, eax
jmp 0x51fb65
pxor xmm2, xmm2
xor ecx, ecx
pxor xmm1, xmm1
test byte [esp + 0x18], 1
je 0x51fb43
and ecx, 0xf8
mov edx, dword [esp]
movd xmm3, dword [edx + ecx + 4]
pand xmm3, xmm0
pxor xmm4, xmm4
pcmpeqb xmm3, xmm4
pcmpeqd xmm5, xmm5
pxor xmm3, xmm5
punpcklbw xmm3, xmm3
punpcklwd xmm3, xmm3
movdqa xmm6, xmmword [0x555bf0]
pand xmm3, xmm6
paddd xmm1, xmm3
movd xmm3, dword [edx + ecx]
pand xmm3, xmm0
pcmpeqb xmm3, xmm4
pxor xmm3, xmm5
punpcklbw xmm3, xmm3
punpcklwd xmm3, xmm3
pand xmm3, xmm6
paddd xmm2, xmm3
paddd xmm2, xmm1
pshufd xmm0, xmm2, 0xee
paddd xmm0, xmm2
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd esi, xmm1
mov ebx, dword [esp + 4]
cmp ebx, eax
je 0x51fbc2
mov ecx, eax
or ecx, 1
test bl, 1
je 0x51fb85
and eax, 0xf8
mov edx, dword [esp]
mov al, byte [edx + eax]
and al, byte [esp + 0x10]
cmp al, 1
sbb esi, 0xffffffff
mov eax, ecx
cmp ebx, ecx
mov ch, byte [esp + 0x10]
je 0x51fbc2
mov ebx, eax
mov eax, dword [esp]
mov dl, ch
movzx ecx, bl
movzx ecx, byte [eax + ecx]
and cl, dl
cmp cl, 1
sbb esi, 0xffffffff
lea ecx, [ebx + 1]
movzx ecx, cl
movzx ecx, byte [eax + ecx]
mov ch, dl
and cl, dl
cmp cl, 1
mov edx, dword [esp + 4]
sbb esi, 0xffffffff
add ebx, 2
cmp edx, ebx
jne 0x51fb92
cmp esi, 1
mov ecx, dword [esp + 8]
mov esi, dword [esp + 0x14]
jne 0x51fbfc
xor ebx, ebx
xor eax, eax
mov dl, byte [esp + 0x10]
mov esi, dword [esp]
movzx ecx, al
test byte [esi + ecx], dl
jne 0x51fd27
add eax, 1
add ebx, 0x1000000
cmp dword [esp + 4], eax
jne 0x51fbda
xor ebx, ebx
jmp 0x51fd2a
mov edx, dword [esi + 0xc]
test edx, edx
jle 0x51fd19
mov al, byte [ebp + 1]
mov byte [esp + 0x10], al
mov eax, dword [esi + 0x10]
shl edx, 4
add edx, eax
mov dword [esp + 0x14], edx
jmp 0x51fc38
xor eax, eax
cmp eax, ecx
je 0x51fc8c
mov eax, dword [esp]
add eax, 0x10
mov edx, dword [esp + 0x14]
cmp eax, edx
mov ecx, dword [esp + 8]
jae 0x51fde4
mov dword [esp], eax
cmp eax, ecx
je 0x51fc22
mov eax, dword [esp]
mov cl, byte [esp + 0x10]
cmp byte [eax + 5], cl
jne 0x51fc22
mov ecx, dword [esp + 4]
test ecx, ecx
je 0x51fc1c
mov eax, dword [esp]
mov esi, dword [eax]
mov dh, byte [eax + 4]
mov eax, dword [esp + 8]
mov ebx, dword [eax]
mov dl, byte [ebp]
xor eax, eax
movzx edi, al
test byte [esi + edi], dh
sete cl
test byte [ebx + edi], dl
setne ch
cmp cl, ch
je 0x51fc84
add eax, 1
cmp dword [esp + 4], eax
jne 0x51fc66
jmp 0x51fc8c
mov ecx, dword [esp + 4]
cmp eax, ecx
jne 0x51fc22
mov eax, dword [esp + 4]
test eax, eax
je 0x51fd06
xor edx, edx
cmp eax, 1
mov ebx, dword [esp + 8]
je 0x51fceb
mov eax, dword [esp + 4]
and eax, 0xfffffffe
mov dword [esp + 0x10], eax
xor edx, edx
mov al, 0xff
movzx ecx, byte [ebp]
not cl
mov esi, dword [ebx]
mov edi, edx
and edi, 0xfe
and byte [esi + edi], cl
movzx ecx, byte [ebp + 1]
add cl, al
add cl, 1
mov byte [ebp + 1], cl
lea ecx, [edx + 1]
mov ah, byte [ebp]
not ah
mov esi, dword [ebx]
movzx ecx, cl
and byte [esi + ecx], ah
add byte [ebp + 1], al
add edx, 2
add al, 0xfe
cmp dword [esp + 0x10], edx
jne 0x51fcae
test byte [esp + 4], 1
je 0x51fd06
mov al, byte [ebp]
not al
mov ecx, dword [esp + 8]
mov ecx, dword [ecx]
movzx esi, dl
and byte [ecx + esi], al
sub byte [ebp + 1], dl
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
cmp eax, dword [esp + 8]
je 0x51fd72
mov edi, dword [esp + 0xc]
jmp 0x51fd7d
mov ebx, ecx
cmp dword [edi + 8], 0
jne 0x51faad
jmp 0x51fd8a
sar ebx, 0x18
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x38]
mov dword [esp + 4], eax
test byte [ecx + 0x18], 2
movzx esi, bl
je 0x51fe19
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isalpha]
add esp, 4
test eax, eax
je 0x51fe19
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isupper]
add esp, 4
test eax, eax
je 0x51fdf6
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_tolower]
jmp 0x51fe0f
mov edi, dword [esp + 0xc]
mov eax, dword [edi + 0x1c]
add dword [eax + 0xc], 0xffffffff
mov ebx, dword [esp]
cmp dword [edi + 8], 0
jne 0x51faad
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 0x1c]
sub ebx, dword [eax + 0x10]
sar ebx, 4
mov ecx, dword [edx + 0x10]
cmp dword [edx + 0x14], ecx
jl 0x51ffe4
lea eax, [ecx + 1]
shr eax, 0x1f
add eax, ecx
add eax, 1
sar eax, 1
lea edi, [eax + eax*2]
cmp ecx, edi
jge 0x51ffe4
cmp edi, 0x40000000
jb 0x51feb1
mov eax, dword [esp + 0xc]
mov dword [eax + 8], 0xc
mov dword [eax], 0x569f8c
mov dword [eax + 4], 0x569f8c
jmp 0x51ffe4
mov ebx, ecx
mov edi, dword [esp + 0xc]
cmp dword [edi + 8], 0
jne 0x51faad
jmp 0x51fd8a
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_islower]
add esp, 4
mov ecx, eax
mov eax, ebx
test ecx, ecx
je 0x51fe12
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_toupper]
add esp, 4
movsx eax, al
cmp eax, ebx
jne 0x51fe6c
cmp dword [edi + 8], 0
jne 0x51ff17
mov ecx, dword [edi + 0x10]
cmp dword [edi + 0x14], ecx
jl 0x51ff02
lea eax, [ecx + 1]
shr eax, 0x1f
add eax, ecx
add eax, 1
sar eax, 1
lea edx, [eax + eax*2]
cmp ecx, edx
jge 0x51ff02
cmp edx, 0x40000000
jb 0x51fedb
mov dword [edi + 8], 0xc
mov dword [edi], 0x569f8c
mov dword [edi + 4], 0x569f8c
jmp 0x51ff02
mov esi, dword [edi]
mov eax, dword [esp + 0xc]
mov edi, dword [eax + 4]
lea eax, [esp + 0x1d]
mov ecx, dword [esp + 0xc]
mov dword [ecx], eax
lea eax, [esp + 0x1f]
mov ecx, dword [esp + 0xc]
mov dword [ecx + 4], eax
mov byte [esp + 0x1d], bl
mov word [esp + 0x1e], 0x5d
mov ecx, dword [esp + 0xc]
call fcn.0051eca0
mov eax, dword [esp + 0xc]
mov dword [eax], esi
mov eax, dword [esp + 0xc]
mov dword [eax + 4], edi
mov edi, dword [esp + 0xc]
jmp 0x51ff30
shl eax, 2
lea eax, [eax + eax*2]
push eax
mov esi, dword [esp + 0x10]
push dword [esi + 0xc]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
add esp, 8
test eax, eax
je 0x51ffca
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], edi
jmp 0x51ffe4
mov dword [esp], edx
shl eax, 2
lea eax, [eax + eax*2]
push eax
push dword [edi + 0xc]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
add esp, 8
test eax, eax
je 0x520002
mov dword [edi + 0xc], eax
mov eax, dword [esp]
mov dword [edi + 0x10], eax
or esi, 0x10000000
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x14]
lea edx, [ecx + 1]
mov dword [edi + 0x14], edx
mov dword [eax + ecx*4], esi
mov esi, dword [esp + 4]
cmp byte [esi + ebx], 0
jne 0x51ff30
mov eax, dword [edi + 0x1c]
mov ecx, dword [eax + 0x34]
lea edx, [ecx + 1]
mov dword [eax + 0x34], edx
mov byte [esi + ebx], cl
mov ecx, dword [edi + 0x1c]
mov eax, dword [ecx + 8]
mov edi, dword [ecx + 0xc]
shl edi, 4
add edi, dword [ecx + 0x10]
test eax, eax
je 0x51fa99
mov dword [esp + 0x10], edi
xor edx, edx
mov dword [esp], eax
cmp eax, 1
mov ebx, dword [esp + 8]
je 0x51ffa3
mov eax, dword [esp]
and eax, 0xfffffffe
mov dword [esp + 4], eax
xor edx, edx
mov cl, 0xff
mov ch, byte [ebp]
not ch
mov esi, dword [ebx]
mov edi, edx
and edi, 0xfe
and byte [esi + edi], ch
mov ch, byte [ebp + 1]
add ch, cl
add ch, 1
mov byte [ebp + 1], ch
lea eax, [edx + 1]
mov ch, byte [ebp]
not ch
mov esi, dword [ebx]
movzx eax, al
and byte [esi + eax], ch
add byte [ebp + 1], cl
add edx, 2
add cl, 0xfe
cmp dword [esp + 4], edx
jne 0x51ff67
test byte [esp], 1
mov edi, dword [esp + 0x10]
je 0x51fa99
mov al, byte [ebp]
not al
mov ecx, dword [esp + 8]
mov ecx, dword [ecx]
movzx esi, dl
and byte [ecx + esi], al
sub byte [ebp + 1], dl
jmp 0x51fa99
cmp dword [esi + 8], 0
jne 0x51ffd7
mov dword [esi + 8], 0xc
mov dword [esi], 0x569f8c
mov dword [esi + 4], 0x569f8c
or ebx, 0x30000000
mov esi, dword [esp + 0xc]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x14]
lea edx, [ecx + 1]
mov dword [esi + 0x14], edx
mov dword [eax + ecx*4], ebx
jmp 0x51faad
cmp dword [edi + 8], 0
jne 0x51fe5a
jmp 0x51fe53