Function at 0x446740
Capabilities:
Parse credit card information

Disassembly:
push ebp
lea ebp, [esp - 0x68]
sub esp, 0x188
or dword [ebp + 0x2c], 0xffffffff
push ebx
push esi
mov esi, dword [ebp + 0x78]
push edi
mov dword [ebp - 8], ecx
xor ecx, ecx
cmp esi, ecx
push 4
mov dword [ebp], ecx
mov byte [ebp + 0x67], cl
mov byte [ebp + 0x5b], cl
mov byte [ebp + 0x3f], cl
mov dword [ebp + 0x40], ecx
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0x50], ecx
mov dword [ebp + 0x18], 1
mov dword [ebp + 0x28], ecx
mov dword [ebp + 0x5c], ecx
mov dword [ebp - 4], ecx
mov dword [ebp - 0xc], ecx
mov dword [ebp + 0x10], ecx
mov dword [ebp + 0x54], ecx
mov dword [ebp + 0x1c], 0x48a288
pop edi
je 0x446dc4
cmp word [esi], cx
je 0x446dc4
xor ebx, ebx
mov bx, word [esi]
mov eax, ebx
call fcn.0040ac1b
test al, al
jne 0x446daf
cmp bx, 0x2e
je 0x446da2
cmp bx, 0x24
je 0x446da2
cmp bx, 0x25
je 0x446da2
cmp bx, 0x2a
jne 0x4467e4
or byte [ebp + 0x67], 4
jmp 0x446da2
push 0x7e
pop ecx
cmp bx, cx
jne 0x446835
lea eax, [esi + 2]
cmp word [eax], cx
jne 0x4467ff
or byte [ebp + 0x67], 2
mov esi, eax
jmp 0x446da2
cmp bx, cx
jne 0x446835
lea eax, [esi + 2]
cmp word [eax], 0x2e
jne 0x446813
or byte [ebp + 0x67], 8
jmp 0x4467f8
cmp bx, cx
jne 0x446835
lea eax, [esi + 2]
cmp word [eax], 0x2a
jne 0x446827
or byte [ebp + 0x67], 0xa
jmp 0x4467f8
cmp bx, cx
jne 0x446835
or byte [ebp + 0x67], 1
jmp 0x446da2
push edi
push esi
push str._env
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446857
add esi, 6
mov dword [ebp + 0x18], 0x40
jmp 0x446da2
push edi
push esi
push str._raw
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446879
add esi, 6
mov dword [ebp + 0x28], 0x40
jmp 0x446da2
cmp bx, 0x3c
jne 0x446888
mov byte [ebp + 0x5b], 1
jmp 0x446da2
cmp bx, 0x3e
jne 0x446897
mov byte [ebp + 0x5b], 2
jmp 0x446da2
push edi
push esi
push 0x48b784
call fcn.0042996a
add esp, 0xc
test al, al
je 0x4468b6
add esi, 6
add byte [ebp + 0x7c], 2
jmp 0x446da2
push edi
push esi
push str._tom
call fcn.0042996a
add esp, 0xc
test al, al
je 0x4468d8
add esi, 6
mov dword [ebp + 0x40], 1
jmp 0x446da2
push edi
push esi
push str._tow
call fcn.0042996a
add esp, 0xc
test al, al
je 0x4468fa
add esi, 6
mov dword [ebp + 0x40], 2
jmp 0x446da2
push 5
push esi
push 0x48b76c
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446919
add esi, 8
mov dword [ebp + 0x40], edi
jmp 0x446da2
push 5
push esi
push str._addr
call fcn.0042996a
add esp, 0xc
test al, al
push 8
je 0x44693a
pop eax
add esi, eax
mov dword [ebp + 0x40], eax
jmp 0x446da2
pop ebx
push ebx
push esi
push str._mkdummy
call fcn.0042996a
add esp, 0xc
test al, al
je 0x44695d
add esi, 0xe
mov dword [ebp + 0x40], 0x81
jmp 0x446da2
push 5
push esi
push 0x48b750
call fcn.0042996a
add esp, 0xc
test al, al
je 0x44697f
add esi, ebx
mov dword [ebp + 0x40], 0x80
jmp 0x446da2
push 5
push esi
push str._swap
call fcn.0042996a
add esp, 0xc
test al, al
je 0x4469a1
add esi, ebx
mov dword [ebp + 0x40], 0x20
jmp 0x446da2
push 5
push esi
push str._char
call fcn.0042996a
add esp, 0xc
test al, al
je 0x4469c3
mov dword [ebp + 0x5c], 1
add esi, ebx
jmp 0x446da2
push 6
push esi
push str._wchar
call fcn.0042996a
add esp, 0xc
test al, al
je 0x4469e6
mov dword [ebp + 0x5c], 2
add esi, 0xa
jmp 0x446da2
push 6
push esi
push str._short
call fcn.0042996a
add esp, 0xc
test al, al
jne 0x4469d7
push edi
push esi
push str._ptr
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446a18
mov dword [ebp + 0x5c], edi
add esi, 6
jmp 0x446da2
push 6
push esi
push str._float
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446a34
mov dword [ebp - 4], edi
mov dword [ebp + 0x5c], edi
jmp 0x4469de
push 7
push esi
push str._double
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446a56
mov dword [ebp - 0xc], ebx
mov dword [ebp + 0x5c], ebx
add esi, 0xc
jmp 0x446da2
push ebx
push esi
push str._ldouble
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446a77
mov dword [ebp + 0x10], ebx
mov dword [ebp + 0x5c], ebx
add esi, 0xe
jmp 0x446da2
push 6
push esi
push 0x48b704
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446a96
add esi, 0xa
mov dword [ebp + 0x5c], ebx
jmp 0x446da2
push 9
push esi
push str._longlong
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446aaf
add esi, 0x10
jmp 0x446a8e
push 5
push esi
push str._long
call fcn.0042996a
add esp, 0xc
test al, al
jne 0x446ad7
push 5
push esi
push str._long
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446adf
mov dword [ebp + 0x5c], edi
jmp 0x4469bc
push 5
push esi
push 0x48b6e8
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446aff
add esi, 0xa
and dword [ebp + 0x2c], 0
jmp 0x446da2
push 7
push esi
push str._intsys
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446b1b
add esi, 0xc
jmp 0x446cb1
push edi
push esi
push str._int
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446b4d
mov ax, word [esi + 8]
and ax, 0xffdf
cmp ax, 0x41
jb 0x446b42
cmp ax, 0x5a
jbe 0x446b4d
add esi, 6
mov dword [ebp + 0x5c], edi
jmp 0x446da2
push 5
push esi
push 0x48b6d0
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446b78
xor eax, eax
add esi, ebx
inc eax
mov dword [ebp + 0x5c], eax
mov dword [ebp + 0x54], eax
mov dword [ebp + 0x1c], str.0x_I64X
jmp 0x446da2
push 6
push esi
push 0x48b6c8
call fcn.0042996a
add esp, 0xc
test al, al
jne 0x446ba0
push 6
push esi
push 0x48b6c0
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446ba8
push 2
add esi, 0xa
pop eax
jmp 0x446b66
push edi
push esi
push 0x48b6b8
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446bca
add esi, 6
mov dword [ebp + 0x54], 0x64
mov dword [ebp + 0x5c], edi
jmp 0x446b6c
push 6
push esi
push 0x48b6b0
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446bef
mov dword [ebp - 4], edi
add esi, 0xa
mov dword [ebp + 0x5c], edi
mov dword [ebp + 0x54], edi
jmp 0x446da2
push 7
push esi
push 0x48b6a8
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446c14
add esi, 0xc
mov dword [ebp - 0xc], ebx
mov dword [ebp + 0x5c], ebx
mov dword [ebp + 0x54], ebx
jmp 0x446da2
push ebx
push esi
push 0x48b69c
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446c2f
add esi, 0xe
mov dword [ebp + 0x10], ebx
jmp 0x446c09
push 6
push esi
push 0x48b694
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446c48
add esi, 0xa
jmp 0x446c09
push 9
push esi
push 0x48b688
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446c61
add esi, 0x10
jmp 0x446c09
push 5
push esi
push 0x48b680
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446c82
add esi, ebx
mov dword [ebp + 0x5c], edi
mov dword [ebp + 0x54], edi
jmp 0x446b6c
push 6
push esi
push str._intpe
call fcn.0042996a
add esp, 0xc
test al, al
jne 0x446be1
push 7
push esi
push 0x48b670
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446cc6
mov dword [ebp + 0x54], edi
cmp byte [0x49ab85], 3
mov dword [ebp + 0x5c], edi
jne 0x446da2
jmp 0x446a8e
push edi
push esi
push 0x48b668
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446cf5
mov ax, word [esi + 8]
and ax, 0xffdf
cmp ax, 0x41
jb 0x446ced
cmp ax, 0x5a
jbe 0x446cf5
add esi, 6
jmp 0x446be4
push edi
push esi
push str._ret
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446d47
add esi, ebx
cmp word [esi], 0x3a
mov dword [ebp + 0x38], 1
mov dword [ebp + 0x48], esi
jne 0x446d1f
inc esi
inc esi
mov dword [ebp + 0x48], esi
xor eax, eax
mov ax, word [esi]
push eax
call fcn.0040fd8a
add esp, 4
test al, al
je 0x446d43
lea eax, [ebp + 0x38]
push eax
lea eax, [ebp + 0x48]
push eax
call fcn.00430ad7
mov esi, dword [ebp + 0x48]
pop ecx
pop ecx
dec esi
dec esi
jmp 0x446da2
push edi
push esi
push str._get
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446d88
add esi, ebx
cmp word [esi], 0x3a
mov dword [ebp + 0x50], 1
mov dword [ebp + 0x48], esi
jne 0x446d71
inc esi
inc esi
mov dword [ebp + 0x48], esi
xor eax, eax
mov ax, word [esi]
push eax
call fcn.0040fd8a
add esp, 4
test al, al
je 0x446d43
lea eax, [ebp + 0x50]
jmp 0x446d34
push 3
push esi
push 0x48b654
call fcn.0042996a
add esp, 0xc
test al, al
je 0x446da2
add esi, edi
mov byte [ebp + 0x3f], 1
inc esi
inc esi
xor ecx, ecx
cmp word [esi], cx
jne 0x4467a3
cmp dword [ebp + 0x28], ecx
je 0x446dc4
mov eax, dword [ebp + 0x78]
mov dword [ebp + 0x70], eax
lea eax, [ebp + 0x70]
push eax
call fcn.00403ff2
pop ecx
mov eax, dword [ebp + 0x70]
mov dword [ebp + 0x30], eax
lea eax, [ebp + 0x30]
push eax
call fcn.00428a5b
mov eax, dword [ebp + 0x30]
pop ecx
jmp 0x446de1
inc byte [ebp + 0x7c]
inc eax
inc eax
mov dword [ebp + 0x30], eax
cmp word [eax], 0x26
je 0x446dd9
lea ecx, [ebp + 0x28]
call fcn.0042e1c4
mov eax, dword [ebp + 0x30]
mov dword [ebp + 0x4c], eax
xor edi, edi
jmp 0x446e04
cmp cx, 0x3d
je 0x446e0c
inc eax
inc eax
mov dword [ebp + 0x30], eax
mov cx, word [eax]
cmp cx, di
jne 0x446df9
mov dword [ebp + 0x60], 0x484964
cmp word [eax], 0x3d
mov ecx, eax
mov byte [ebp + 0x73], 0
je 0x446e25
mov byte [ebp + 0x73], 1
jmp 0x446e2d
inc eax
inc eax
mov dword [ebp + 0x30], eax
mov dword [ebp + 0x60], eax
mov word [ecx], di
push dword [ebp + 0x4c]
call fcn.0040bf57
mov eax, dword [ebp + 0x4c]
cmp word [eax], 0x7e
pop ecx
jne 0x446e7d
inc eax
inc eax
mov edx, eax
mov dword [ebp], edx
jmp 0x446e53
cmp cx, 0x7e
je 0x446e5e
inc eax
inc eax
mov dword [ebp + 0x4c], eax
mov cx, word [eax]
cmp cx, di
jne 0x446e4b
cmp word [eax], 0x7e
je 0x446e6e
mov edi, 0x80070057
jmp 0x447038
mov word [eax], di
add dword [ebp + 0x4c], 2
cmp word [edx], di
jne 0x446e7d
mov dword [ebp], edi
lea ecx, [ebp + 0x20]
call fcn.0042e1c4
mov esi, dword [ebp - 8]
push 0x3b
push 0x2c
lea eax, [ebp + 0x28]
push eax
lea eax, [ebp + 0x4c]
push eax
mov ecx, esi
call fcn.00425fcd
push 0x3b
push 0x2c
lea eax, [ebp + 0x20]
push eax
lea eax, [ebp + 0x4c]
push eax
mov ecx, esi
call fcn.00425fcd
cmp dword [ebp + 0x40], 8
mov eax, dword [ebp + 0x28]
mov dword [ebp + 0x4c], eax
je 0x446ecb
cmp word [eax], di
jne 0x446ecb
mov eax, dword [ebp + 0x20]
cmp word [eax], di
je 0x447030
cmp byte [ebp + 0x7c], 2
mov ecx, dword [ebp + 0x38]
setge byte [ebp + 0x47]
mov al, byte [ebp + 0x47]
neg al
mov edx, esi
mov dword [ebp + 0x24], edx
sbb eax, eax
and eax, esi
cmp ecx, edi
mov dword [ebp + 0x14], eax
mov eax, esi
mov dword [ebp + 0x34], eax
jle 0x446f06
dec ecx
js 0x446efd
inc ecx
dec ecx
mov eax, dword [eax + 0x28]
jne 0x446ef4
mov dword [ebp + 0x34], eax
cmp byte [ebp + 0x47], 0
je 0x446f06
mov dword [ebp + 0x14], eax
mov eax, dword [ebp + 0x50]
cmp eax, edi
jle 0x446f1a
dec eax
js 0x446f1a
inc eax
dec eax
mov edx, dword [edx + 0x28]
jne 0x446f11
mov dword [ebp + 0x24], edx
cmp byte [ebp + 0x73], 0
je 0x446f27
mov byte [ebp + 0x5b], 0
mov dword [ebp + 0x40], edi
mov ebx, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x49b604
call ebx
xor esi, esi
push 0xa
pop ecx
xor eax, eax
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x3c], esi
lea edi, [ebp - 0x38]
rep stosd dword es:[edi], eax
lea ecx, [ebp + 0x38]
mov dword [ebp + 0x48], esi
mov byte [ebp + 0x7f], 0
call fcn.0042e1c4
and dword [ebp + 0x50], esi
cmp dword [ebp + 0x2c], esi
lea eax, [ebp + 0x50]
mov dword [ebp + 8], eax
lea eax, [ebp + 0x7c]
mov dword [ebp - 0x10], eax
jl 0x447047
lea eax, [ebp + 0x2c]
push eax
lea eax, [ebp + 0x60]
push eax
call fcn.00430ad7
test eax, eax
pop ecx
pop ecx
jle 0x446f87
movzx eax, byte [ebp + 0x2c]
mov dword [ebp + 0x2c], eax
mov ecx, dword [ebp + 0x34]
push 0xffffffffffffffff
push dword [ebp + 0x14]
push dword [ebp + 0x4c]
call fcn.0040bce3
mov edi, eax
test edi, edi
mov ebx, edi
jne 0x446ff2
cmp dword [ebp + 0x2c], eax
jge 0x447603
cmp byte [ebp + 0x7f], al
mov eax, 0x484964
jne 0x446fb5
mov eax, dword [ebp + 0x60]
mov cl, byte [ebp + 0x7f]
neg cl
sbb ecx, ecx
not ecx
and ecx, esi
push ecx
mov ecx, dword [ebp + 0x34]
push 0xffffffffffffffff
push eax
push dword [ebp + 0x4c]
call fcn.0040bc46
cmp dword [ebp], 0
mov edi, eax
je 0x446fea
test edi, edi
je 0x447603
push dword [ebp]
lea ecx, [edi + 8]
call fcn.0043a57e
test edi, edi
je 0x447603
cmp dword [ebp + 0x2c], 0
jl 0x4477cd
mov eax, dword [edi + 0xc]
and eax, 0x3fffffff
push eax
push dword [ebp + 0x2c]
push dword [edi + 4]
call fcn.00470340
add esp, 0xc
xor edi, edi
lea ecx, [ebp + 0x50]
call fcn.00428a48
lea ecx, [ebp + 0x38]
call fcn.00428a48
push 0x49b604
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [ebp + 0x20]
call fcn.00428a48
lea ecx, [ebp + 0x28]
call fcn.00428a48
mov eax, edi
jmp 0x447840
cmp byte [ebp + 0x3f], 0
je 0x447065
push dword [ebp + 0x60]
push dword [ebp + 0x24]
call fcn.004310b3
pop ecx
pop ecx
push 2
mov dword [ebp + 0x60], eax
pop esi
jmp 0x446f87
test byte [ebp + 0x40], 0x80
je 0x447259
mov esi, dword [ebp + 0x60]
xor ebx, ebx
push 0x26
pop eax
or edi, 0xffffffff
cmp word [esi], ax
mov dword [ebp + 0xc], ebx
mov dword [ebp + 0x10], ebx
mov dword [ebp + 0x48], ebx
mov dword [ebp + 0x54], esi
mov byte [ebp + 0x7b], bl
jne 0x447155
push 2
mov byte [ebp + 0x7b], 1
pop ecx
cmp ax, 0x3b
je 0x4470be
cmp ax, 0x2c
je 0x4470be
cmp ax, 0x3a
je 0x4470be
cmp ax, 0x40
je 0x4470be
add esi, ecx
mov ax, word [esi]
cmp ax, bx
mov dword [ebp + 0x54], esi
jne 0x447099
mov ax, word [esi]
cmp ax, bx
je 0x4470ce
mov word [esi], bx
add esi, ecx
mov dword [ebp + 0x54], esi
cmp ax, 0x40
mov dword [ebp + 0x18], esi
jne 0x44710b
mov ax, word [esi]
cmp ax, bx
je 0x44710b
cmp ax, 0x3b
je 0x4470fe
cmp ax, 0x2c
je 0x4470fe
cmp ax, 0x3a
je 0x4470fe
add esi, ecx
mov ax, word [esi]
cmp ax, bx
mov dword [ebp + 0x54], esi
jne 0x4470df
cmp word [esi], bx
je 0x44710b
mov word [esi], bx
add esi, ecx
mov dword [ebp + 0x54], esi
mov ecx, dword [ebp + 0x24]
push edi
push ebx
push dword [ebp + 0x60]
call fcn.0040bce3
cmp eax, ebx
je 0x447177
mov ecx, dword [eax + 4]
mov dword [ebp + 0x60], ecx
mov edi, dword [eax + 0xc]
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp + 0x18]
and edi, 0x3fffffff
push eax
mov dword [ebp + 0x48], edi
call fcn.00430ab3
cmp dword [ebp + 0x10], ebx
pop ecx
pop ecx
jl 0x447177
mov eax, dword [ebp + 0xc]
jg 0x44714b
cmp eax, ebx
jbe 0x447177
add dword [ebp + 0x60], eax
sub edi, eax
mov dword [ebp + 0x48], edi
jmp 0x447177
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp + 0x54]
push eax
call fcn.00430ab3
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 0x54]
pop ecx
mov dword [ebp + 0x60], eax
cmp word [esi], bx
pop ecx
je 0x447177
inc esi
inc esi
mov dword [ebp + 0x54], esi
cmp dword [ebp + 0x60], ebx
jne 0x44718a
mov dword [ebp + 0x60], 0x4855be
xor esi, esi
jmp 0x446f87
cmp word [esi], 0x2a
sete bl
test bl, bl
je 0x44719a
inc esi
inc esi
mov dword [ebp + 0x54], esi
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp + 0x54]
push eax
call fcn.00430ad7
cmp eax, 1
pop ecx
pop ecx
jge 0x4471d1
cmp byte [ebp + 0x7b], 0
jne 0x4471e2
test bl, bl
push dword [ebp + 0x60]
je 0x4471c5
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
jmp 0x4471e5
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
shl esi, 1
jmp 0x4471e5
cmp byte [ebp + 0x7b], 0
je 0x4471e2
mov esi, dword [ebp + 0x48]
cmp esi, edi
jle 0x4471e5
mov esi, edi
jmp 0x4471e5
mov esi, dword [ebp + 0x48]
test esi, esi
jge 0x4471f3
mov edi, 0x80070057
jmp 0x447015
and esi, 0x3fffffff
cmp dword [ebp + 0x40], 0x81
jne 0x446f87
mov ecx, dword [ebp + 0x24]
mov ebx, dword [ebp + 0x60]
push 0xffffffffffffffff
xor edi, edi
push edi
push dword [ebp + 0x38]
call fcn.0040bce3
cmp eax, edi
je 0x447227
cmp dword [eax + 0xc], edi
jge 0x44723a
mov dword [eax + 4], edi
jmp 0x44723a
mov ecx, dword [ebp + 0x34]
push edi
push 0xffffffffffffffff
push 0x484964
push dword [ebp + 0x4c]
call fcn.0040bc46
or esi, 0x80000000
mov dword [eax + 0xc], esi
mov ecx, dword [eax + 4]
mov dword [eax + 4], ebx
mov dword [ebp + 0x7c], ecx
lea ecx, [ebp + 0x7c]
call fcn.00428a48
jmp 0x447015
xor edi, edi
cmp dword [ebp + 0x40], edi
je 0x4473e0
mov ecx, dword [ebp - 8]
push edi
push 0x2c
lea eax, [ebp + 0x38]
push eax
lea eax, [ebp + 0x60]
push eax
call fcn.00425fcd
mov ecx, dword [ebp + 0x24]
push 0xffffffffffffffff
push edi
push dword [ebp + 0x38]
call fcn.0040bce3
cmp eax, edi
je 0x4471e9
lea esi, [eax + 4]
mov ecx, dword [esi]
mov dword [ebp + 0x60], ecx
mov ecx, dword [ebp + 0x40]
cmp ecx, 8
jne 0x4472ea
mov eax, dword [eax + 0xc]
push dword [ebp + 0x20]
and eax, 0x3fffffff
push eax
push dword [ebp - 8]
call fcn.00430102
mov eax, dword [ebp + 0x4c]
add esp, 0xc
cmp word [eax], di
je 0x447015
push dword [esi]
lea eax, [ebp - 0x80]
push str.0x_p
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [ebp - 0x80]
add esp, 0xc
push eax
mov dword [ebp + 0x60], eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
shl esi, 1
jmp 0x446f87
cmp ecx, 4
jne 0x4472fc
mov ecx, dword [esi]
mov dword [ebp + 0x60], ecx
mov esi, dword [eax + 0xc]
jmp 0x4473d5
cmp ecx, 1
jne 0x447365
mov esi, dword [eax + 0xc]
sar esi, 1
and esi, 0x1fffffff
lea edi, [esi + esi*4]
lea eax, [edi + 1]
push eax
lea ecx, [ebp + 0x50]
call fcn.0042e092
xor ebx, ebx
push ebx
push ebx
push edi
push dword [ebp + 0x50]
push esi
push dword [ebp + 0x60]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov esi, eax
cmp esi, ebx
jge 0x447339
xor esi, esi
jmp 0x44733f
cmp esi, edi
jle 0x44733f
mov esi, edi
mov eax, dword [ebp + 0x50]
mov byte [esi + eax], 0
lea eax, [esi + 1]
cdq
sub eax, edx
mov edi, eax
sar edi, 1
lea eax, [edi + 1]
push eax
lea ecx, [ebp + 0x50]
call fcn.0042e20b
mov eax, dword [ebp + 0x50]
mov word [eax + edi*2], bx
jmp 0x4473ac
cmp ecx, 2
jne 0x4473b8
mov esi, dword [eax + 0xc]
and esi, 0x3fffffff
lea eax, [esi + 1]
push eax
lea ecx, [ebp + 0x50]
call fcn.0042e20b
push esi
push dword [ebp + 0x50]
push esi
push dword [ebp + 0x60]
push edi
push edi
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov esi, eax
cmp esi, edi
jge 0x447397
xor esi, esi
lea eax, [esi + 1]
push eax
lea ecx, [ebp + 0x50]
call fcn.0042e20b
mov eax, dword [ebp + 0x50]
add esi, esi
mov word [esi + eax], di
mov byte [ebp + 0x7f], 1
mov dword [ebp + 0x60], eax
jmp 0x446f87
cmp ecx, 0x20
jne 0x447015
mov ecx, dword [esi]
add eax, 0xc
mov dword [ebp + 8], esi
mov dword [ebp + 0x60], ecx
mov esi, dword [eax]
mov dword [ebp - 0x10], eax
mov byte [ebp + 0x7f], 1
and esi, 0x3fffffff
jmp 0x446f87
cmp byte [ebp + 0x67], 0
mov eax, dword [ebp + 0x60]
je 0x44740c
cmp word [eax], di
je 0x44742e
mov ecx, dword [ebp + 0x18]
or cl, byte [ebp + 0x67]
push ecx
push eax
lea ecx, [ebp + 0x38]
call fcn.0043a522
mov ecx, dword [ebp + 0x24]
push eax
call fcn.00446646
mov dword [ebp + 0x60], eax
xor edi, edi
cmp word [eax], di
je 0x44742e
lea eax, [ebp + 0x48]
push eax
push dword [ebp + 0x78]
lea eax, [ebp + 0x50]
push eax
lea eax, [ebp + 0x60]
push eax
call fcn.0043eb0b
mov eax, dword [ebp + 0x60]
mov esi, dword [ebp + 0x48]
add esp, 0x10
cmp eax, dword [ebp + 0x50]
sete byte [ebp + 0x7f]
cmp dword [ebp + 0x54], edi
je 0x447551
lea ecx, [ebp + 0x7c]
mov dword [ebp + 0x30], eax
call fcn.0042e1c4
mov ecx, dword [ebp - 8]
push 0x2c
push 0x3a
lea eax, [ebp + 0x7c]
push eax
lea eax, [ebp + 0x30]
push eax
call fcn.00425fcd
mov eax, dword [ebp + 0x7c]
cmp word [eax], di
je 0x44724c
lea eax, [ebp + 0x70]
push eax
lea eax, [ebp + 0x30]
push eax
mov dword [ebp + 0x70], edi
call fcn.00430ad7
pop ecx
pop ecx
mov ecx, dword [ebp + 0x34]
push 0xffffffffffffffff
push dword [ebp + 0x14]
mov word [ebp - 0x120], di
push dword [ebp + 0x4c]
call fcn.0040bce3
xor esi, esi
inc esi
cmp eax, edi
je 0x447530
mov ecx, dword [ebp + 0x70]
mov edx, dword [ebp + 0x5c]
lea ebx, [ecx + edx]
cmp dword [eax + 0xc], ebx
jl 0x447530
mov eax, dword [eax + 4]
push edx
add eax, ecx
push eax
lea eax, [ebp - 0x40]
push eax
xor esi, esi
call fcn.00470580
add esp, 0xc
cmp dword [ebp - 4], edi
je 0x4474d8
fld dword [ebp - 0x40]
push ecx
push ecx
fstp qword [esp]
push 0x48b64c
jmp 0x4474ef
cmp dword [ebp - 0xc], edi
jne 0x4474e2
cmp dword [ebp + 0x10], edi
je 0x4474fe
fld qword [ebp - 0x40]
push ecx
push ecx
fstp qword [esp]
push 0x48b644
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
jmp 0x44752d
cmp dword [ebp + 0x54], 0x64
lea eax, [ebp - 0x120]
jne 0x44751e
push dword [ebp - 0x40]
push str.0x_p
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
jmp 0x447530
push dword [ebp + 0x1c]
push dword [ebp - 0x3c]
push dword [ebp - 0x40]
push eax
call fcn.0042dbb3
add esp, 0x10
mov ecx, dword [ebp + 0x34]
lea eax, [ebp - 0x120]
push eax
push dword [ebp + 0x7c]
call fcn.0042cbf7
lea ecx, [ebp + 0x7c]
call fcn.00428a48
mov edi, esi
jmp 0x447015
cmp dword [ebp + 0x5c], edi
je 0x44767d
cmp dword [ebp - 4], edi
fldz
fstp qword [ebp + 4]
mov dword [ebp + 0x7c], eax
je 0x44757c
lea eax, [ebp + 4]
push eax
lea eax, [ebp + 0x7c]
push eax
call fcn.004308ac
fld qword [ebp + 4]
fstp dword [ebp - 0x40]
jmp 0x4475a8
cmp dword [ebp - 0xc], edi
jne 0x447586
cmp dword [ebp + 0x10], edi
je 0x44759b
lea eax, [ebp + 4]
push eax
lea eax, [ebp + 0x7c]
push eax
call fcn.004308ac
fld qword [ebp + 4]
fstp qword [ebp - 0x40]
jmp 0x4475a8
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp + 0x7c]
push eax
call fcn.00430ab3
mov eax, dword [ebp + 0x7c]
cmp word [eax], di
pop ecx
pop ecx
mov dword [ebp + 0x70], edi
je 0x4475c8
add dword [ebp + 0x7c], 2
lea eax, [ebp + 0x70]
push eax
lea eax, [ebp + 0x7c]
push eax
call fcn.00430ad7
pop ecx
pop ecx
mov eax, dword [ebp + 0x70]
mov ecx, dword [ebp + 0x5c]
push 0xffffffffffffffff
push dword [ebp + 0x14]
lea ebx, [eax + ecx]
push dword [ebp + 0x4c]
mov ecx, dword [ebp + 0x34]
mov dword [ebp + 0x7c], ebx
call fcn.0040bce3
mov esi, eax
cmp esi, edi
jne 0x44760b
mov ecx, dword [ebp + 0x34]
push edi
push 0xffffffffffffffff
push 0x484964
push dword [ebp + 0x4c]
call fcn.0040bc46
mov esi, eax
cmp esi, edi
jne 0x44760b
xor edi, edi
inc edi
jmp 0x447015
mov eax, ebx
sub eax, dword [esi + 0xc]
cmp eax, edi
mov dword [ebp + 0x78], eax
jle 0x447662
mov eax, dword [ebp + 0x7c]
inc eax
cdq
sub eax, edx
mov ebx, eax
sar ebx, 1
lea eax, [ebx + 2]
lea edi, [esi + 4]
push eax
mov ecx, edi
call fcn.0042e20b
push dword [ebp + 0x78]
mov eax, dword [esi + 0xc]
add eax, dword [edi]
push 0
push eax
call fcn.00470340
mov eax, dword [edi]
add ebx, ebx
and word [ebx + eax + 2], 0
mov eax, dword [edi]
and word [ebx + eax], 0
mov ecx, dword [edi]
mov eax, dword [ebp + 0x7c]
add esp, 0xc
mov byte [eax + ecx], 0
mov dword [esi + 0xc], eax
xor edi, edi
push dword [ebp + 0x5c]
lea eax, [ebp - 0x40]
push eax
mov eax, dword [esi + 4]
add eax, dword [ebp + 0x70]
push eax
call fcn.00470580
add esp, 0xc
jmp 0x447015
cmp byte [ebp + 0x5b], 0
je 0x44777e
cmp esi, edi
jle 0x447015
push 0x49b604
call ebx
mov ecx, dword [ebp + 0x34]
push 0xffffffffffffffff
push dword [ebp + 0x14]
push dword [ebp + 0x4c]
call fcn.0040bce3
cmp eax, edi
mov dword [ebp + 0x18], eax
jne 0x4476bd
push 0x49b604
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x446f87
mov edx, dword [eax + 0xc]
mov ecx, edx
and ecx, 0x3fffffff
test edx, edx
lea edi, [eax + 4]
mov eax, dword [edi]
setl byte [ebp + 0x7f]
cmp byte [ebp + 0x7f], 0
mov dword [ebp + 0x70], ecx
mov dword [ebp + 0x78], eax
je 0x4476e2
and dword [edi], 0
mov eax, dword [ebp + 0x70]
add eax, esi
mov dword [ebp + 8], eax
cdq
sub eax, edx
mov ebx, eax
sar ebx, 1
lea eax, [ebx + 2]
push eax
mov ecx, edi
call fcn.0042e20b
mov eax, dword [edi]
add ebx, ebx
and word [eax + ebx + 2], 0
mov eax, dword [edi]
and word [ebx + eax], 0
cmp byte [ebp + 0x5b], 1
mov edi, dword [edi]
jne 0x447731
cmp byte [ebp + 0x7f], 0
je 0x44772a
push dword [ebp + 0x70]
push dword [ebp + 0x78]
push edi
call fcn.00470580
add esp, 0xc
mov eax, dword [ebp + 0x70]
add edi, eax
jmp 0x447758
cmp byte [ebp + 0x5b], 2
jne 0x447765
cmp byte [ebp + 0x7f], 0
push dword [ebp + 0x70]
lea eax, [edi + esi]
je 0x44774e
push dword [ebp + 0x78]
push eax
call fcn.00470580
jmp 0x447755
push edi
push eax
call fcn.004708c0
add esp, 0xc
push esi
push dword [ebp + 0x60]
push edi
call fcn.00470580
add esp, 0xc
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x18]
push 0x49b604
mov dword [ecx + 0xc], eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x447813
cmp byte [ebp + 0x73], 0
je 0x446f87
cmp byte [ebp + 0x47], 0
jne 0x446f87
mov ecx, dword [ebp + 0x34]
push 0xffffffffffffffff
push dword [ebp + 0x14]
push dword [ebp + 0x4c]
call fcn.0040bce3
mov esi, eax
test esi, esi
je 0x447813
cmp dword [esi + 0xc], 0xfffff000
jge 0x4477ba
mov eax, dword [esi + 4]
and word [eax], 0
jmp 0x447813
push 0x484964
lea ecx, [esi + 4]
call fcn.0043a522
and dword [esi + 0xc], 0
jmp 0x447813
cmp byte [ebp + 0x73], 0
jne 0x447813
test ebx, ebx
je 0x4477e4
cmp dword [ebx + 0xc], 0xfffff000
jge 0x4477e4
and dword [ebx + 4], 0
cmp byte [ebp + 0x7f], 0
je 0x447804
mov eax, dword [edi + 0xc]
mov ecx, dword [ebp - 0x10]
mov dword [ecx], eax
mov ecx, dword [ebp + 8]
mov edx, dword [edi + 4]
mov eax, dword [ecx]
mov dword [ecx], edx
mov dword [edi + 4], eax
mov dword [edi + 0xc], esi
jmp 0x447813
test ebx, ebx
je 0x447813
push esi
push dword [ebp + 0x60]
mov ecx, edi
call fcn.00402baf
lea ecx, [ebp + 0x50]
call fcn.00428a48
lea ecx, [ebp + 0x38]
call fcn.00428a48
push 0x49b604
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [ebp + 0x20]
call fcn.00428a48
lea ecx, [ebp + 0x28]
call fcn.00428a48
xor eax, eax
pop edi
pop esi
pop ebx
add ebp, 0x68
leave
ret 0x10