Function at 0x4537c0
Capabilities:
Parse credit card information
Query environment variable

Disassembly:
push 0xffffffffffffffff
push 0x4ea038
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x6c
mov al, byte [ecx + 0xb]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x90]
xor ebx, ebx
cmp esi, ebx
setl dl
and al, 0x11
test dl, dl
push edi
mov dword [esp + 0x1c], ecx
mov byte [esp + 0x16], dl
mov byte [esp + 0x14], al
jne 0x45380a
mov al, byte [esp + 0x98]
test al, al
jns 0x45380f
mov byte [esp + 0x14], 0
mov dl, byte [esp + 0x98]
mov eax, dword [esp + 0x9c]
and dl, 1
cmp eax, ebx
mov byte [esp + 0x98], dl
mov byte [esp + 0x17], 0
mov byte [esp + 0x15], 0
je 0x45383b
mov al, byte [eax]
mov byte [esp + 0x15], al
push 0xa2
mov dword [esp + 0x30], 0x50
call fcn.00449130
add esp, 4
cmp eax, ebx
mov dword [esp + 0x20], eax
je 0x45385b
mov word [eax], bx
cmp esi, 0x400
mov edi, dword [esp + 0x90]
mov dword [esp + 0x84], ebx
jge 0x45389a
mov ecx, dword [edi]
mov esi, 0x400
push ecx
mov eax, 0x802
mov dword [esp + 0x98], esi
call fcn.00449190
add esp, 4
cmp eax, ebx
mov dword [edi], eax
je 0x45389a
mov word [eax + 0x800], bx
mov eax, dword [edi]
lea edx, [eax + esi*2 - 2]
mov ebp, eax
mov dword [esp + 0x18], edx
mov esi, ebp
jmp 0x4538b0
mov eax, dword [esp + 0x18]
cmp esi, eax
jae 0x454144
mov ebx, dword [esp + 0x8c]
cmp word [ebx], 0
je 0x454144
mov edi, dword [esp + 0x90]
add eax, 0xfffff81c
mov ecx, esi
sub ecx, eax
test ecx, 0xfffffffe
jl 0x453933
mov eax, dword [esp + 0x94]
mov edx, dword [edi]
add eax, 0x400
mov dword [esp + 0x94], eax
sub esi, ebp
lea eax, [eax + eax + 2]
push edx
sar esi, 1
call fcn.00449190
add esp, 4
test eax, eax
mov dword [edi], eax
je 0x45391e
mov ecx, dword [esp + 0x94]
mov word [eax + ecx*2], 0
mov ebp, dword [edi]
mov edx, dword [esp + 0x94]
lea eax, [ebp + edx*2 - 2]
mov dword [esp + 0x18], eax
lea esi, [ebp + esi*2]
cmp word [ebx], 0x25
je 0x45396e
mov ecx, 0x3dd
mov edi, edi
mov ax, word [ebx]
test ax, ax
je 0x4538b0
cmp ax, 0x25
je 0x4538b0
mov word [esi], ax
add ebx, 2
add esi, 2
dec ecx
mov dword [esp + 0x8c], ebx
jns 0x453940
jmp 0x4538b0
mov al, byte [esp + 0x98]
test al, al
mov dword [esp + 0x28], ebx
je 0x453c78
mov cx, word [ebx + 2]
cmp cx, 0x25
jne 0x4539a0
mov word [esi], cx
add esi, 2
add ebx, 4
mov dword [esp + 0x8c], ebx
jmp 0x4538b0
cmp cx, 0x23
jne 0x4539ea
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x38]
add ebx, 4
test eax, eax
mov dword [esp + 0x8c], ebx
je 0x4538b0
mov ecx, dword [ecx + 0x34]
mov ecx, dword [eax + ecx*4 + 8]
mov ax, word [ecx]
test ax, ax
je 0x4538b0
mov word [esi], ax
add ecx, 2
xor eax, eax
mov ax, word [ecx]
add esi, 2
test ax, ax
jne 0x4539d2
jmp 0x4538b0
cmp cx, 0x2a
jne 0x453a94
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x38]
add ebx, 4
test eax, eax
mov dword [esp + 0x8c], ebx
je 0x4538b0
mov edx, dword [ecx + 0x34]
mov eax, dword [eax + edx*4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ecx, dword [esp + 0x18]
mov ebx, eax
lea eax, [ebx + ebx + 4]
sub eax, ecx
add eax, esi
test eax, 0xfffffffe
jl 0x453a62
mov ecx, dword [esp + 0x94]
lea eax, [ecx + ebx + 0x10]
sub esi, ebp
push eax
mov ecx, edi
sar esi, 1
mov dword [esp + 0x98], eax
call fcn.004494e0
mov ebp, dword [edi]
mov edx, dword [esp + 0x94]
lea eax, [ebp + edx*2 - 2]
mov dword [esp + 0x18], eax
lea esi, [ebp + esi*2]
dec ebx
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x34]
mov edx, dword [eax + 0x38]
mov eax, dword [edx + ecx*4]
js 0x4538b0
lea ecx, [ebx + 1]
lea esp, [esp]
mov dx, word [eax]
mov word [esi], dx
add esi, 2
add eax, 2
dec ecx
jne 0x453a80
jmp 0x4538b0
cmp cx, 0x40
jne 0x453b3a
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x38]
add ebx, 4
test eax, eax
mov dword [esp + 0x8c], ebx
je 0x4538b0
mov ecx, dword [ecx + 0x34]
mov eax, dword [eax + ecx*4 + 4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
mov eax, dword [esp + 0x18]
lea edx, [ebx + ebx + 4]
sub edx, eax
add edx, esi
test edx, 0xfffffffe
jl 0x453b0e
mov eax, dword [esp + 0x94]
lea eax, [eax + ebx + 0x10]
sub esi, ebp
push eax
mov ecx, edi
sar esi, 1
mov dword [esp + 0x98], eax
call fcn.004494e0
mov ebp, dword [edi]
mov ecx, dword [esp + 0x94]
lea edx, [ebp + ecx*2 - 2]
mov dword [esp + 0x18], edx
lea esi, [ebp + esi*2]
dec ebx
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x34]
mov edx, dword [eax + 0x38]
mov eax, dword [edx + ecx*4 + 4]
js 0x4538b0
lea ecx, [ebx + 1]
mov dx, word [eax]
mov word [esi], dx
add esi, 2
add eax, 2
dec ecx
jne 0x453b26
jmp 0x4538b0
mov eax, ecx
call fcn.0043af40
test al, al
jne 0x453b60
cmp cx, 0x7e
jb 0x453c78
mov ax, word [ebx + 4]
call fcn.0043af40
test al, al
je 0x453c78
cmp cx, 0x7e
mov dword [esp + 0x28], 0
jb 0x453b79
mov dword [esp + 0x28], 0x25
add ebx, 2
add ebx, 2
xor ecx, ecx
mov dword [esp + 0x8c], ebx
xor edi, edi
mov ax, word [ebx]
cmp ax, 0x30
jb 0x453bb8
cmp ax, 0x39
ja 0x453bb8
push 0
push 0xa
push edi
push ecx
call fcn.004b4970
mov ecx, eax
movzx eax, word [ebx]
mov edi, edx
cdq
add ecx, eax
adc edi, edx
add ecx, 0xffffffd0
adc edi, 0xffffffff
add ebx, 2
jmp 0x453b87
mov dword [esp + 0x8c], ebx
mov ebx, dword [esp + 0x1c]
mov eax, dword [ebx + 0x34]
cdq
cmp edi, edx
ja 0x4538b0
jb 0x453bd9
cmp ecx, eax
jae 0x4538b0
mov eax, dword [ebx + 0x38]
test eax, eax
je 0x4538b0
mov edi, dword [eax + ecx*4]
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
mov eax, dword [esp + 0x28]
test eax, eax
je 0x453c0b
cmp word [edi], 0x22
jne 0x453c0b
cmp word [edi + ebx*2 - 2], 0x22
jne 0x453c07
dec ebx
dec ebx
add edi, 2
mov eax, dword [esp + 0x18]
lea edx, [ebx + ebx + 4]
sub edx, eax
add edx, esi
test edx, 0xfffffffe
jl 0x453c5a
mov eax, dword [esp + 0x94]
sub esi, ebp
mov ebp, dword [esp + 0x90]
lea eax, [eax + ebx + 0x10]
push eax
mov ecx, ebp
sar esi, 1
mov dword [esp + 0x98], eax
call fcn.004494e0
mov ebp, dword [ebp]
mov ecx, dword [esp + 0x94]
lea edx, [ebp + ecx*2 - 2]
mov dword [esp + 0x18], edx
lea esi, [ebp + esi*2]
dec ebx
js 0x4538b0
lea eax, [ebx + 1]
mov cx, word [edi]
mov word [esi], cx
add esi, 2
add edi, 2
dec eax
jne 0x453c64
jmp 0x4538b0
push 8
push str._RANDOM_
push ebx
call dword [sym.imp.SHLWAPI.dll_StrCmpNIW]
test eax, eax
jne 0x453d54
add ebx, 0x10
mov dword [esp + 0x8c], ebx
mov word [esp + 0x3c], ax
call fcn.00445d10
and edx, 0x7fffffff
push edx
push eax
lea edx, [esp + 0x44]
push edx
call fcn.004a48e0
add esp, 0xc
lea eax, [esp + 0x3c]
push eax
mov word [esp + 0x7e], 0
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
cmp ebx, 1
jge 0x453cd2
xor ebx, ebx
mov eax, dword [esp + 0x18]
lea ecx, [ebx + ebx + 4]
sub ecx, eax
add ecx, esi
test ecx, 0xfffffffe
jl 0x453d2d
mov edx, dword [esp + 0x94]
mov ecx, dword [edi]
sub esi, ebp
sar esi, 1
mov dword [esp + 0x34], esi
lea esi, [edx + ebx + 0x10]
lea eax, [esi + esi + 2]
push ecx
mov dword [esp + 0x98], esi
call fcn.00449190
add esp, 4
test eax, eax
mov dword [edi], eax
je 0x453d1b
mov word [eax + esi*2], 0
mov ebp, dword [edi]
mov eax, dword [esp + 0x34]
lea edx, [ebp + esi*2 - 2]
mov dword [esp + 0x18], edx
lea esi, [ebp + eax*2]
dec ebx
lea eax, [esp + 0x3c]
js 0x4538b0
lea ecx, [ebx + 1]
jmp 0x453d40
mov dx, word [eax]
mov word [esi], dx
add esi, 2
add eax, 2
dec ecx
jne 0x453d40
jmp 0x4538b0
add ebx, 2
mov eax, ebx
mov cx, word [eax]
test cx, cx
mov dword [esp + 0x8c], eax
je 0x453d87
cmp cx, 0x25
je 0x453d80
cmp cx, 0x3d
je 0x453d80
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x453d68
mov dword [esp + 0x8c], eax
mov edx, dword [esp + 0x28]
mov ecx, eax
sub ecx, edx
sar ecx, 1
cmp word [eax], 0x25
mov dword [esp + 0x28], ecx
movsx ecx, byte [esp + 0x14]
mov dword [esp + 0x24], eax
mov dword [esp + 0x38], edx
mov byte [esp + 0x13], 0
mov dword [esp + 0x34], ecx
jne 0x453fdd
mov al, byte [esp + 0x16]
test al, al
jne 0x453e03
mov ax, word [ebx]
cmp ax, 0x26
je 0x453dd4
mov cl, byte [esp + 0x14]
test cl, cl
je 0x453e03
cmp ax, 0x5e
je 0x453e03
mov ecx, dword [esp + 0x8c]
add ecx, 2
cmp word [ebx], 0x26
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x30], ebx
jne 0x453ede
add ebx, 2
mov dword [esp + 0x34], 1
jmp 0x453ede
mov edx, dword [esp + 0x8c]
mov eax, 2
add edx, eax
cmp word [ebx], 0x5e
mov dword [esp + 0x8c], edx
jne 0x453e30
mov ecx, edx
add ebx, eax
add ecx, eax
mov dword [esp + 0x8c], ecx
mov byte [esp + 0x13], 8
mov dword [esp + 0x30], ebx
mov al, byte [esp + 0x15]
test al, al
mov edx, dword [esp + 0x20]
mov word [edx], 0
jne 0x453ec1
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
push ecx
push edx
push ebx
mov word [eax], 0
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
mov edi, eax
test edi, edi
jle 0x453e9f
mov eax, dword [esp + 0x20]
cmp word [eax], 0
jne 0x453e9f
add edi, 0x64
push edi
lea ecx, [esp + 0x24]
mov dword [esp + 0x30], edi
call fcn.004494e0
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ecx, dword [esp + 0x20]
push edi
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
mov edi, eax
mov edx, dword [esp + 0x24]
mov word [edx], 0x25
call dword [sym.imp.KERNEL32.dll_GetLastError]
test edi, edi
jg 0x454094
cmp eax, 0xcb
jne 0x454094
mov al, byte [esp + 0x13]
test al, al
jne 0x453fb1
mov al, byte [esp + 0x16]
test al, al
mov byte [esp + 0x13], 1
jne 0x453fb1
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
push 0xffffffffffffffff
push 0
push eax
mov word [edi], 0
call fcn.00423eea
test eax, eax
mov word [edi], 0x25
jne 0x453f24
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x4538b0
mov al, byte [esp + 0x13]
test al, al
jne 0x453fa4
mov byte [esp + 0x13], 1
jmp 0x453e34
mov ebx, dword [eax]
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, eax
mov eax, dword [esp + 0x18]
lea ecx, [edi + edi + 4]
sub ecx, eax
add ecx, esi
test ecx, 0xfffffffe
jl 0x453f7e
mov edx, dword [esp + 0x94]
sub esi, ebp
mov ebp, dword [esp + 0x90]
lea eax, [edx + edi + 0x10]
push eax
mov ecx, ebp
sar esi, 1
mov dword [esp + 0x98], eax
call fcn.004494e0
mov ebp, dword [ebp]
mov eax, dword [esp + 0x94]
lea ecx, [ebp + eax*2 - 2]
mov dword [esp + 0x18], ecx
lea esi, [ebp + esi*2]
dec edi
js 0x4538b0
lea eax, [edi + 1]
jmp 0x453f90
mov dx, word [ebx]
mov word [esi], dx
add esi, 2
add ebx, 2
dec eax
jne 0x453f90
jmp 0x4538b0
cmp byte [esp + 0x14], 1
je 0x4538b0
jmp 0x453fd5
cmp byte [esp + 0x14], 1
jne 0x453fc0
xor al, al
je 0x4538b0
mov edx, dword [esp + 0x8c]
sub edx, 2
xor al, al
mov dword [esp + 0x8c], edx
je 0x453fdd
sub dword [esp + 0x8c], 2
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x18]
lea eax, [ebx + ebx + 6]
sub eax, edi
add eax, esi
test eax, 0xfffffffe
jl 0x454028
mov ecx, dword [esp + 0x94]
sub esi, ebp
mov ebp, dword [esp + 0x90]
lea edi, [ecx + ebx + 0x11]
push edi
mov ecx, ebp
sar esi, 1
mov dword [esp + 0x98], edi
call fcn.004494e0
mov ebp, dword [ebp]
lea edx, [ebp + edi*2 - 2]
mov dword [esp + 0x18], edx
lea esi, [ebp + esi*2]
mov ecx, dword [esp + 0x8c]
cmp word [ecx], 0x25
jne 0x45406b
mov ax, word [ecx + 2]
cmp ax, 0x25
je 0x454060
cmp ax, 0x2a
je 0x454060
cmp ax, 0x40
je 0x454060
cmp ax, 0x23
je 0x454060
cmp ax, 0x7e
je 0x454060
call fcn.0043af40
test al, al
je 0x45406b
add ecx, 2
mov dword [esp + 0x8c], ecx
inc ebx
dec ebx
mov dword [esp + 0x28], ebx
js 0x4538b0
mov eax, dword [esp + 0x38]
mov ecx, ebx
inc ecx
lea ecx, [ecx]
mov dx, word [eax]
mov word [esi], dx
add esi, 2
add eax, 2
dec ecx
jne 0x454080
jmp 0x4538b0
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x4540c8
mov eax, dword [esp + 0x1c]
mov cl, byte [eax + 0x8e]
test cl, cl
jne 0x4540c8
mov ecx, dword [esp + 0x20]
push 0x25
push ecx
call dword [sym.imp.SHLWAPI.dll_StrChrW]
test eax, eax
je 0x4540c8
mov edx, dword [esp + 0x9c]
mov byte [edx], 1
test edi, edi
jle 0x4540d1
mov byte [esp + 0x17], 1
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
lea ecx, [edi + edi + 4]
sub ecx, edx
add ecx, esi
test ecx, 0xfffffffe
mov dword [esp + 0x28], eax
jl 0x454125
mov edx, dword [esp + 0x94]
sub esi, ebp
mov ebp, dword [esp + 0x90]
lea ebx, [edx + edi + 0x10]
push ebx
mov ecx, ebp
sar esi, 1
mov dword [esp + 0x98], ebx
call fcn.004494e0
mov ebp, dword [ebp]
lea eax, [ebp + ebx*2 - 2]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
lea esi, [ebp + esi*2]
dec edi
js 0x4538b0
inc edi
lea ecx, [ecx]
mov cx, word [eax]
mov word [esi], cx
add esi, 2
add eax, 2
dec edi
jne 0x454130
jmp 0x4538b0
mov al, byte [esp + 0x17]
test al, al
mov word [esi], 0
jne 0x45416d
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x45416d
mov edx, dword [esp + 0x1c]
mov cl, byte [edx + 0x8e]
test cl, cl
jne 0x45416d
mov byte [eax], 1
mov edi, dword [esp + 0x90]
mov ecx, dword [edi]
sub esi, ebp
sar esi, 1
lea eax, [esi + esi + 6]
push ecx
call fcn.00449190
add esp, 4
test eax, eax
mov dword [edi], eax
je 0x454194
mov word [eax + esi*2 + 4], 0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4541af
mov edx, dword [0x51d3c8]
add eax, 0xfffffff8
push eax
push 0
push edx
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, dword [esp + 0x7c]
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x78
ret 0x14