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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c4
mov al, byte [ecx + 9]
push esi
xor esi, esi
cmp dword [ebp + 0x10], esi
push edi
setl byte [ebp - 0x11]
and al, 0x11
cmp byte [ebp - 0x11], 0
mov dword [ebp - 0x18], ecx
mov byte [ebp - 5], al
jne 0x10058520
test byte [ebp + 0x14], 0x80
je 0x10058524
mov byte [ebp - 5], 0
mov eax, dword [ebp + 0x18]
and byte [ebp + 0x14], 1
cmp eax, esi
mov byte [ebp - 0x1e], 0
mov byte [ebp - 0x1d], 0
je 0x1005853c
mov al, byte [eax]
mov byte [ebp - 0x1d], al
push ebx
push 0x50
pop eax
push eax
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x54], eax
mov dword [ebp - 0xc], esi
call fcn.10046141
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp + 0x10]
push eax
push dword [ebp + 0xc]
lea ecx, [ebp - 0x6c]
mov dword [ebp - 4], esi
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x48], esi
call fcn.1004e489
mov ebx, dword [ebp + 8]
mov edi, dword [ebp - 0x18]
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 0x50]
jae 0x10058e3b
cmp word [ebx], 0
je 0x10058e3b
lea ecx, [ebp - 0x6c]
call fcn.1004e57b
push 0x25
pop esi
cmp word [ebx], si
je 0x100585d1
mov ecx, dword [ebp - 0x48]
sub ecx, dword [ebp - 4]
sar ecx, 1
jmp 0x100585c9
mov ax, word [ebx]
test ax, ax
je 0x10058580
cmp ax, si
je 0x10058580
mov edx, dword [ebp - 4]
mov word [edx], ax
add dword [ebp - 4], 2
inc ebx
inc ebx
dec ecx
mov dword [ebp - 0xc], ecx
jns 0x100585b0
jmp 0x10058580
cmp byte [ebp + 0x14], 0
mov dword [ebp - 0x2c], ebx
je 0x10058811
lea edx, [ebx + 2]
mov cx, word [edx]
cmp cx, si
jne 0x100585f8
mov eax, dword [ebp - 4]
mov word [eax], si
add dword [ebp - 4], 2
add ebx, 4
jmp 0x10058580
cmp cx, 0x23
jne 0x1005863d
mov eax, dword [edi + 0x3c]
add ebx, 4
test eax, eax
mov dword [ebp + 8], ebx
je 0x1005857a
mov ecx, dword [edi + 0x38]
mov eax, dword [eax + ecx*4 + 8]
mov cx, word [eax]
test cx, cx
je 0x1005857a
mov edx, dword [ebp - 4]
mov word [edx], cx
add dword [ebp - 4], 2
inc eax
inc eax
xor ecx, ecx
mov cx, word [eax]
test cx, cx
jne 0x10058622
jmp 0x10058580
cmp cx, 0x2a
jne 0x100586a0
mov eax, dword [edi + 0x3c]
add ebx, 4
test eax, eax
mov dword [ebp + 8], ebx
je 0x1005857a
mov ecx, dword [edi + 0x38]
push dword [eax + ecx*4]
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
lea eax, [esi + 2]
push eax
lea ecx, [ebp - 0x6c]
call fcn.1004e500
mov eax, dword [edi + 0x38]
mov ecx, dword [edi + 0x3c]
mov eax, dword [ecx + eax*4]
dec esi
mov dword [ebp - 0xc], esi
js 0x1005857a
lea ecx, [esi + 1]
sub esi, ecx
mov dword [ebp - 0xc], esi
mov dx, word [eax]
mov esi, dword [ebp - 4]
mov word [esi], dx
add dword [ebp - 4], 2
inc eax
inc eax
dec ecx
jne 0x10058689
jmp 0x10058580
cmp cx, 0x40
jne 0x10058705
mov eax, dword [edi + 0x3c]
add ebx, 4
test eax, eax
mov dword [ebp + 8], ebx
je 0x1005857a
mov ecx, dword [edi + 0x38]
push dword [eax + ecx*4 + 4]
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
lea eax, [esi + 2]
push eax
lea ecx, [ebp - 0x6c]
call fcn.1004e500
mov eax, dword [edi + 0x38]
mov ecx, dword [edi + 0x3c]
mov eax, dword [ecx + eax*4 + 4]
dec esi
mov dword [ebp - 0xc], esi
js 0x1005857a
lea ecx, [esi + 1]
sub esi, ecx
mov dword [ebp - 0xc], esi
mov dx, word [eax]
mov esi, dword [ebp - 4]
mov word [esi], dx
add dword [ebp - 4], 2
inc eax
inc eax
dec ecx
jne 0x100586ee
jmp 0x10058580
push ecx
call fcn.10045b88
add esp, 4
test al, al
jne 0x10058733
cmp cx, 0x7e
jb 0x10058811
xor eax, eax
mov ax, word [ebx + 4]
push eax
call fcn.10045b88
add esp, 4
test al, al
je 0x10058811
and dword [ebp - 0x34], 0
cmp cx, 0x7e
jb 0x10058742
mov dword [ebp - 0x34], esi
mov ebx, edx
inc ebx
inc ebx
xor esi, esi
mov si, word [ebx]
mov dword [ebp + 8], ebx
xor ecx, ecx
xor edi, edi
push esi
call fcn.10045b88
add esp, 4
test al, al
je 0x10058791
push 0
push 0xa
push edi
push ecx
call fcn.100b4200
mov ecx, eax
movzx eax, si
mov edi, edx
cdq
add ecx, eax
adc edi, edx
add ecx, 0xffffffd0
adc edi, 0xffffffff
inc ebx
inc ebx
xor esi, esi
mov si, word [ebx]
push esi
call fcn.10045b88
add esp, 4
test al, al
jne 0x1005875d
mov dword [ebp + 8], ebx
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x38]
cdq
cmp edi, edx
ja 0x1005857a
jb 0x100587aa
cmp ecx, eax
jae 0x1005857a
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x3c]
test eax, eax
je 0x1005857a
mov esi, dword [eax + ecx*4]
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp dword [ebp - 0x34], 0
mov edi, eax
je 0x100587dc
cmp word [esi], 0x22
jne 0x100587dc
cmp word [esi + edi*2 - 2], 0x22
jne 0x100587d9
dec edi
dec edi
inc esi
inc esi
lea eax, [edi + 2]
push eax
lea ecx, [ebp - 0x6c]
call fcn.1004e500
dec edi
mov dword [ebp - 0xc], edi
js 0x1005857a
lea eax, [edi + 1]
sub edi, eax
mov dword [ebp - 0xc], edi
mov cx, word [esi]
mov edx, dword [ebp - 4]
mov word [edx], cx
add dword [ebp - 4], 2
inc esi
inc esi
dec eax
jne 0x100587fa
jmp 0x1005857d
lea edi, [ebx + 2]
mov esi, edi
jmp 0x1005881a
inc esi
inc esi
cmp word [esi], 0x26
je 0x10058818
mov ebx, dword [sym.imp.SHLWAPI.dll_StrCmpNIW]
push 7
push str.RANDOM_
push esi
call ebx
test eax, eax
jne 0x10058841
call fcn.1004217a
and edx, 0x7fffffff
jmp 0x10058859
push 7
push str.__THIS_
push esi
call ebx
test eax, eax
jne 0x100588ce
mov eax, dword [ebp - 0x18]
add eax, 0x75bd036
xor edx, edx
and word [ebp - 0x110], 0
push edx
push eax
lea eax, [ebp - 0x110]
lea ebx, [esi + 0xe]
push eax
mov dword [ebp + 8], ebx
call fcn.100a0e5d
and word [ebp - 0x6e], 0
add esp, 0xc
lea eax, [ebp - 0x110]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
cmp esi, 1
jge 0x10058893
xor esi, esi
lea eax, [esi + 2]
push eax
lea ecx, [ebp - 0x6c]
call fcn.1004e500
dec esi
lea eax, [ebp - 0x110]
mov dword [ebp - 0xc], esi
js 0x1005857a
lea ecx, [esi + 1]
sub esi, ecx
mov dword [ebp - 0xc], esi
mov dx, word [eax]
mov esi, dword [ebp - 4]
mov word [esi], dx
add dword [ebp - 4], 2
inc eax
inc eax
dec ecx
jne 0x100588b7
jmp 0x1005857d
mov ecx, edi
jmp 0x100588e0
cmp ax, 0x25
je 0x100588eb
cmp ax, 0x3d
je 0x100588eb
inc ecx
inc ecx
mov ax, word [ecx]
test ax, ax
mov dword [ebp + 8], ecx
jne 0x100588d2
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp - 0x2c]
mov eax, ebx
sub eax, ecx
sar eax, 1
cmp word [ebx], 0x25
mov dword [ebp - 0x38], eax
movsx eax, byte [ebp - 5]
mov dword [ebp - 0x34], ecx
mov byte [ebp - 6], 0
mov dword [ebp - 0x4c], eax
jne 0x10058d66
cmp byte [ebp - 0x11], 0
jne 0x10058952
mov ax, word [edi]
cmp ax, 0x26
je 0x1005892d
cmp byte [ebp - 5], 0
je 0x10058952
cmp ax, 0x5e
je 0x10058952
add dword [ebp + 8], 2
cmp word [edi], 0x26
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x40], edi
jne 0x10058a7b
inc edi
inc edi
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x4c], 1
jmp 0x10058a7b
add dword [ebp + 8], 2
mov eax, edi
cmp word [eax], 0x5e
mov dword [ebp - 0x2c], eax
jne 0x1005896a
inc eax
inc eax
mov dword [ebp - 0x2c], eax
mov byte [ebp - 6], 8
mov dword [ebp - 0x40], eax
mov ecx, dword [ebp - 0x28]
xor esi, esi
mov edi, 0xcb
mov word [ecx], si
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x30], 0x7fffffff
jmp 0x100589a0
mov cx, word [eax]
test cx, cx
je 0x100589e5
cmp cx, 0x3a
jne 0x1005899e
cmp word [eax + 2], 0x7e
je 0x100589a9
inc eax
inc eax
cmp eax, ebx
mov dword [ebp - 0x1c], eax
jb 0x10058989
jmp 0x100589e5
and word [eax], 0
add dword [ebp - 0x1c], 4
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.10042554
mov eax, dword [ebp - 0x1c]
mov ax, word [eax]
pop ecx
pop ecx
call fcn.10044784
test al, al
je 0x100589e5
add dword [ebp - 0x1c], 2
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.10042554
pop ecx
pop ecx
cmp byte [ebp - 0x1d], 0
jne 0x10058a46
mov edi, dword [sym.imp.KERNEL32.dll_SetLastError]
push 0
call edi
push dword [ebp - 0x54]
and word [ebx], 0
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
mov esi, eax
test esi, esi
jle 0x10058a39
mov eax, dword [ebp - 0x28]
cmp word [eax], 0
jne 0x10058a39
add esi, 0x64
push esi
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x54], esi
call fcn.10046168
push 0
call edi
push esi
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
mov esi, eax
mov word [ebx], 0x25
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
mov eax, dword [ebp - 0x3c]
test eax, eax
jne 0x10058c46
test esi, esi
jg 0x10058dde
cmp edi, 0xcb
jne 0x10058dde
cmp byte [ebp - 6], al
jne 0x10058d4c
cmp byte [ebp - 0x11], al
mov byte [ebp - 6], 1
jne 0x10058d4c
mov eax, dword [ebp - 0x40]
xor edx, edx
mov dword [ebp - 0x10], eax
xor esi, esi
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x30], 0x7fffffff
jmp 0x10058abc
mov cx, word [eax]
cmp cx, dx
je 0x10058bfa
cmp cx, 0x3a
jne 0x10058aad
cmp word [eax + 2], 0x7e
je 0x10058ac5
inc eax
inc eax
cmp cx, 0x3f
mov dword [ebp - 0x10], eax
je 0x10058ba0
cmp eax, ebx
jb 0x10058a94
jmp 0x10058bfa
mov ecx, dword [ebp - 0x18]
xor esi, esi
push esi
push 0xffffffffffffffff
push esi
push dword [ebp - 0x40]
mov word [eax], si
call fcn.10010cdd
mov edi, eax
mov eax, dword [ebp - 0x10]
mov word [eax], 0x3a
add dword [ebp - 0x10], 4
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.10042554
pop ecx
pop ecx
mov ecx, dword [ebp - 0x10]
mov ax, word [ecx]
call fcn.10044784
test al, al
je 0x10058b29
lea eax, [ebp - 0x30]
push eax
inc ecx
lea eax, [ebp - 0x10]
inc ecx
push eax
mov dword [ebp - 0x10], ecx
call fcn.10042554
pop ecx
pop ecx
mov ecx, dword [ebp - 0x10]
jmp 0x10058b29
cmp ax, 0x25
je 0x10058b33
inc ecx
inc ecx
mov dword [ebp - 0x10], ecx
mov ax, word [ecx]
cmp ax, si
jne 0x10058b1e
jmp 0x10058b39
add ecx, 2
mov dword [ebp + 8], ecx
cmp edi, esi
je 0x10058c26
mov esi, dword [edi + 4]
mov ecx, dword [edi + 0x10]
mov edx, dword [ebp - 0x3c]
cmp edx, ecx
mov eax, esi
lea edi, [esi + ecx*2]
mov dword [ebp - 0x10], eax
jle 0x10058b58
mov edx, ecx
cmp dword [ebp - 0x30], ecx
mov ebx, ecx
jg 0x10058b62
mov ebx, dword [ebp - 0x30]
test edx, edx
mov dword [ebp - 0xc], ebx
jl 0x10058cb1
test ebx, ebx
jl 0x10058cb1
test edx, edx
jle 0x10058d0e
lea ecx, [esi + edx*2]
cmp esi, ecx
jae 0x10058ca9
cmp word [eax], 0
je 0x10058ca1
inc eax
inc eax
cmp eax, ecx
mov dword [ebp - 0x10], eax
jb 0x10058b88
jmp 0x10058ca9
lea esi, [eax - 2]
mov word [esi], dx
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x1c], esi
jmp 0x10058bb9
inc ecx
inc ecx
cmp ax, 0x3a
mov dword [ebp - 0x10], ecx
je 0x10058bc3
mov ax, word [ecx]
cmp ax, dx
jne 0x10058bae
jmp 0x10058bc6
mov dword [ebp - 0x1c], ecx
cmp word [ebx], dx
je 0x10058bfa
cmp word [ebx + 2], 0x25
jne 0x10058bfa
lea eax, [ebx + 4]
cmp word [eax], 0x64
jne 0x10058bfa
jmp 0x10058be5
cmp cx, 0x25
je 0x10058bf2
inc eax
inc eax
mov dword [ebp - 0x10], eax
mov cx, word [eax]
cmp cx, dx
jne 0x10058bdd
jmp 0x10058bfa
mov ebx, eax
add eax, 2
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x18]
xor edi, edi
push edi
push 0xffffffffffffffff
push edi
push dword [ebp - 0x40]
mov word [ebx], di
call fcn.10010cdd
cmp esi, edi
mov word [ebx], 0x25
je 0x10058c1e
mov word [esi], 0x3f
inc esi
inc esi
cmp eax, edi
jne 0x10058cf4
cmp dword [ebp - 0x4c], 0
jne 0x1005857a
cmp byte [ebp - 6], 0
jne 0x10058ce8
mov eax, dword [ebp - 0x2c]
mov byte [ebp - 6], 1
jmp 0x1005896d
cmp dword [ebp - 0x24], esi
mov word [eax], 0x3a
jle 0x10058c53
mov dword [ebp - 0x24], esi
cmp dword [ebp - 0x30], esi
jle 0x10058c5b
mov dword [ebp - 0x30], esi
cmp dword [ebp - 0x24], 0
jge 0x10058c70
mov eax, esi
neg eax
cmp dword [ebp - 0x24], eax
jge 0x10058c6d
mov dword [ebp - 0x24], eax
add dword [ebp - 0x24], esi
mov ecx, dword [ebp - 0x30]
mov eax, esi
sub eax, dword [ebp - 0x24]
test ecx, ecx
jge 0x10058c87
lea esi, [eax + ecx]
test esi, esi
jge 0x10058c93
xor esi, esi
jmp 0x10058c93
cmp esi, eax
jle 0x10058c8d
mov esi, eax
cmp esi, ecx
jle 0x10058c93
mov esi, ecx
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
lea edi, [eax + ecx*2]
jmp 0x10058e0e
sub eax, esi
sar eax, 1
mov edx, eax
xor ebx, ebx
lea esi, [esi + edx*2]
mov dword [ebp - 0xc], ebx
jmp 0x10058d0e
cmp word [esi], 0
je 0x10058cc6
cmp eax, edi
jae 0x10058cc6
inc eax
inc eax
mov dword [ebp - 0x10], eax
cmp word [eax], 0
jne 0x10058cb7
sub eax, esi
sar eax, 1
test edx, edx
jge 0x10058cd4
add edx, eax
jns 0x10058cd4
xor edx, edx
test ebx, ebx
jge 0x10058ce0
sub eax, edx
add ebx, eax
jns 0x10058ce0
xor ebx, ebx
mov dword [ebp - 0xc], ebx
lea esi, [esi + edx*2]
jmp 0x10058d0e
cmp byte [ebp - 5], 1
je 0x1005857a
jmp 0x10058d62
push dword [ebp - 0x1c]
lea ecx, [ebp - 0x1c4]
push ecx
push esi
lea ecx, [ebp - 0xc]
push ecx
push eax
call fcn.1004e5eb
add esp, 0x14
mov esi, eax
mov eax, dword [ebp - 0xc]
add eax, 2
push eax
lea ecx, [ebp - 0x6c]
call fcn.1004e500
jmp 0x10058d39
mov ax, word [esi]
mov ecx, dword [ebp - 4]
mov word [ecx], ax
mov eax, dword [ebp - 4]
mov ax, word [eax]
add dword [ebp - 4], 2
inc esi
inc esi
test ax, ax
je 0x10058d43
dec dword [ebp - 0xc]
jns 0x10058d1f
jmp 0x1005857a
sub dword [ebp - 4], 2
jmp 0x1005857a
cmp byte [ebp - 5], 1
jne 0x10058d5a
xor al, al
je 0x1005857a
sub dword [ebp + 8], 2
xor al, al
je 0x10058d66
sub dword [ebp + 8], 2
mov eax, dword [ebp - 0x38]
add eax, 3
push eax
lea ecx, [ebp - 0x6c]
call fcn.1004e500
mov ecx, dword [ebp + 8]
cmp word [ecx], 0x25
jne 0x10058db5
add ecx, 2
mov ax, word [ecx]
cmp ax, 0x25
je 0x10058daf
cmp ax, 0x2a
je 0x10058daf
cmp ax, 0x40
je 0x10058daf
cmp ax, 0x23
je 0x10058daf
cmp ax, 0x7e
je 0x10058daf
push eax
call fcn.10045b88
add esp, 4
test al, al
je 0x10058db5
inc dword [ebp - 0x38]
mov dword [ebp + 8], ecx
dec dword [ebp - 0x38]
js 0x1005857a
mov eax, dword [ebp - 0x38]
inc eax
mov ecx, dword [ebp - 0x34]
mov cx, word [ecx]
mov edx, dword [ebp - 4]
add dword [ebp - 0x34], 2
mov word [edx], cx
add dword [ebp - 4], 2
dec eax
jne 0x10058dc2
jmp 0x1005857a
mov edi, dword [ebp + 0x18]
test edi, edi
je 0x10058e03
mov eax, dword [ebp - 0x18]
cmp byte [eax + 0x92], 0
jne 0x10058e03
push 0x25
push dword [ebp - 0x28]
call dword [sym.imp.SHLWAPI.dll_StrChrW]
test eax, eax
je 0x10058e03
mov byte [edi], 1
test esi, esi
jle 0x10058e0b
mov byte [ebp - 0x1e], 1
mov edi, dword [ebp - 0x28]
lea eax, [esi + 2]
push eax
lea ecx, [ebp - 0x6c]
call fcn.1004e500
dec esi
js 0x1005857a
lea eax, [esi + 1]
mov cx, word [edi]
mov edx, dword [ebp - 4]
mov word [edx], cx
add dword [ebp - 4], 2
inc edi
inc edi
dec eax
jne 0x10058e24
jmp 0x1005857a
and word [eax], 0
cmp byte [ebp - 0x1e], 0
pop ebx
jne 0x10058e59
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x10058e59
cmp byte [edi + 0x92], 0
jne 0x10058e59
mov byte [eax], 1
mov eax, dword [ebp - 4]
sub eax, dword [ebp - 0x44]
mov ecx, dword [ebp + 0xc]
sar eax, 1
inc eax
inc eax
push eax
call fcn.10046168
mov esi, dword [ebp - 4]
sub esi, dword [ebp - 0x44]
lea ecx, [ebp - 0x28]
sar esi, 1
call fcn.1003f96c
pop edi
mov eax, esi
pop esi
leave
ret 0x14