Function at 0x71ac90c3
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x34
push ebx
mov ebx, dword [ebp + 8]
mov edx, ecx
push esi
push edi
xor ecx, ecx
mov dword [esp + 0x1c], edx
mov al, byte [ebx + 1]
mov byte [esp + 0xd], al
movzx eax, al
mov dword [esp + 0x30], ecx
mov dword [esp + 0x18], ecx
mov al, byte [eax + 0x627b5f0]
shr al, 2
and al, 1
mov byte [esp + 0xc], al
mov al, byte [ebx]
movzx edi, al
mov byte [esp + 0xe], al
mov al, byte [edi + 0x627b450]
mov byte [esp + 0xf], al
movzx eax, al
mov dword [esp + 0x34], eax
test al, 3
je 0x71ac91fe
cmp edi, 9
ja 0x71ad252a
je 0x71b0029e
sub edi, 1
jne 0x71ad6651
xor edi, edi
mov ecx, edx
inc edi
push ebx
mov dword [esp + 0x18], edi
call fcn.71ad1b28
test al, al
je 0x71adc63a
mov eax, dword [ebp + 8]
xor esi, esi
inc esi
xor ebx, ebx
mov dword [esp + 0x10], esi
inc ebx
imul ecx, dword [eax + 0x24], 0x60
mov eax, dword [esp + 0x1c]
add ecx, dword [eax + 0x1c]
call fcn.71ac29ff
test al, al
jne 0x71af8e46
mov ecx, dword [esp + 0x10]
mov al, byte [esp + 0xd]
mov edx, dword [esp + 0x1c]
sub al, 0xa
cmp al, 1
jbe 0x71b076b9
cmp byte [esp + 0xc], 0
jne 0x71b00285
mov esi, dword [esp + 0x14]
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 0x1c]
movzx eax, byte [ecx + 0x18bc]
cmp eax, dword [ecx + 0x18bc]
jne 0x71b28692
mov al, byte [ecx + 0x18bc]
mov byte [edi + 8], al
mov eax, dword [ecx + 0x18bc]
cmp eax, dword [ecx + 0x1544]
ja 0x71b0027a
mov eax, dword [esp + 0x18]
mov ecx, 0xff
mov byte [edi + 6], al
mov eax, dword [esp + 0x10]
cmp eax, ecx
jg 0x71b047b1
movzx eax, al
mov byte [edi + 2], al
cmp ebx, ecx
jg 0x71ac91f0
movzx ecx, bl
mov byte [edi + 3], cl
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
test al, 0x3c
je 0x71ad2550
test byte [esp + 0xf], 8
mov eax, dword [ebx + 0x24]
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], eax
je 0x71ac93ba
mov esi, dword [ebx + 0x28]
mov dword [esp + 0x20], esi
mov dword [esp + 0x28], esi
mov ebx, ecx
mov dword [esp + 0x10], ecx
test eax, eax
je 0x71ae5ae6
test esi, esi
je 0x71ad0d53
mov ebx, dword [esp + 0x24]
xor eax, eax
inc eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x2c], eax
mov al, byte [ebx + 1]
sub al, 0xa
push 4
pop ecx
cmp al, 1
jbe 0x71b07650
push 5
pop eax
cmp edi, 0x25
jbe 0x71ad9e9e
cmp edi, 0x26
je 0x71b08b6d
cmp edi, 0x2d
ja 0x71adebc6
mov eax, dword [esp + 0x34]
mov ecx, edx
and eax, 0x40
mov dword [esp + 0x3c], eax
push ebx
jne 0x71ad6607
call fcn.71ac90c3
mov esi, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], esi
test eax, eax
js 0x71b08a1e
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
push esi
call fcn.71ac90c3
add dword [esp + 0x28], eax
mov ecx, dword [esp + 0x18]
movzx eax, byte [ebx + 6]
or ecx, eax
cmp byte [esp + 0xe], 0x2d
mov dword [esp + 0x18], ecx
je 0x71ac92da
movzx eax, byte [esi + 6]
or ecx, eax
mov dword [esp + 0x18], ecx
movzx ecx, byte [esi + 2]
movzx esi, byte [ebx + 2]
add esi, dword [esp + 0x10]
mov eax, dword [esp + 0x20]
add esi, ecx
movzx ebx, byte [ebx + 3]
add ebx, dword [esp + 0x2c]
mov dword [esp + 0x10], esi
movzx ecx, byte [eax + 3]
mov esi, dword [esp + 0x14]
add ebx, ecx
cmp byte [esp + 0xc], 0
jne 0x71b0c1de
cmp dword [esp + 0x3c], 0
jne 0x71ad667e
test byte [esp + 0x34], 0x10
jne 0x71adec45
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x20]
mov dl, byte [esp + 0xe]
cmp dl, 0x2a
jb 0x71ac9348
cmp dl, 0x2c
jbe 0x71aee50a
sub dl, 0x38
cmp dl, 2
jbe 0x71aee50a
mov edx, dword [esp + 0x24]
test esi, esi
je 0x71af035a
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x3c], eax
and eax, 0x20
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x20]
jne 0x71ad824e
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], eax
cmp byte [esp + 0x30], 0
jne 0x71ac9395
cmp dword [esp + 0x38], 0
jne 0x71b09705
cmp esi, dword [esp + 0x28]
setb al
test al, al
jne 0x71addf09
test byte [ecx + 0x10], 0x20
jne 0x71ad825b
mov eax, dword [esp + 0x28]
cmp esi, 1
jb 0x71ae09d1
cmp esi, eax
jne 0x71ac9196
inc esi
jmp 0x71ac9196
mov esi, ecx
mov dword [esp + 0x20], ecx
jmp 0x71ac9223
mov dword [esp + 0x14], ecx
jmp 0x71ac9187
inc esi
xor ebx, ebx
push eax
mov ecx, edx
mov dword [esp + 0x14], esi
inc ebx
call fcn.71ac90c3
mov ecx, dword [esp + 0x24]
mov esi, eax
mov dword [esp + 0x14], esi
movzx eax, byte [ecx + 6]
mov dword [esp + 0x18], eax
cmp edi, 0x46
ja 0x71adc69f
je 0x71b0593b
cmp edi, 0x18
jbe 0x71ae0ac7
sub edi, 0x1c
je 0x71aea6e8
sub edi, 1
jne 0x71b05932
test esi, esi
je 0x71af8b82
mov edi, esi
mov eax, dword [ebp + 8]
push 3
pop ecx
push 2
mov al, byte [eax + 1]
pop ebx
sub al, bl
mov dword [esp + 0x10], ecx
cmp al, 5
jbe 0x71ae6131
mov esi, dword [esp + 0x10]
cmp byte [esp + 0xc], 0
jne 0x71b0f851
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
shr eax, 0x1f
and al, 1
mov byte [esp + 0xc], al
jne 0x71aee7bf
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov al, byte [esi]
mov byte [esp + 0xf], al
cmp al, 0x20
jne 0x71ae466d
push 1
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x23]
push eax
xor eax, eax
push eax
push eax
push eax
push esi
call fcn.71ad94db
test al, al
je 0x71af5d61
or dword [esi + 0x10], 0x80000000
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
test edx, edx
je 0x71ad0e4e
movzx eax, byte [edx + 2]
add ecx, eax
movzx eax, byte [edx + 3]
mov dword [esp + 0x10], ecx
add ebx, eax
mov edi, dword [esp + 0x3c]
test edi, edi
jne 0x71aeebde
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x71ad0e6e
movsx eax, cl
cmp eax, ecx
jne 0x71aeb4f0
inc ebx
lea eax, [esp + 0xc]
xor esi, esi
push eax
push esi
push edx
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.71ad9f39
lea eax, [esp + 0xc]
push eax
push 1
push esi
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.71ad9f39
lea eax, [esp + 0xc]
push eax
push 1
push esi
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x38]
push eax
call fcn.71ad9f39
cmp dword [esp + 0x34], 1
ja 0x71aeec37
mov edx, dword [esp + 0x2c]
cmp edx, edi
je 0x71b00827
mov ecx, edx
call fcn.71ad9d42
cmp eax, edi
je 0x71b00827
mov esi, dword [esp + 0x30]
cmp edx, esi
jne 0x71b0fbc3
test edi, edi
je 0x71ac9192
mov ecx, dword [esp + 0x28]
mov al, byte [ecx]
cmp al, 0x22
je 0x71ad0f00
cmp al, 0x2a
jne 0x71ac9192
mov edx, dword [ecx + 0x24]
mov al, byte [edx]
cmp al, 0xc
jne 0x71b286b2
mov esi, 0x80000000
mov eax, edx
or dword [ecx + 0x10], esi
cmp byte [eax], 0x22
mov edi, dword [ebp + 8]
je 0x71afe43e
mov esi, dword [esp + 0x14]
jmp 0x71ac9199
sub edi, 0xa
je 0x71b28686
sub edi, 0x4d
je 0x71aea8ed
sub edi, 1
jne 0x71ae5db9
mov dword [esp + 0x10], ecx
mov ebx, ecx
jmp 0x71ad0d4a
sub edi, 0x10
je 0x71aee755
sub edi, 5
je 0x71afab41
sub edi, 0x35
je 0x71b18a6c
sub edi, 1
jne 0x71b2870a
mov edi, dword [esp + 0x1c]
mov esi, ecx
mov ecx, dword [ebp + 8]
push 5
pop edx
push 2
mov eax, dword [ecx + 0x24]
mov dword [esp + 0x14], edx
mov dword [esp + 0x40], eax
pop ebx
test eax, eax
jne 0x71ae2a2d
mov eax, dword [ecx + 0x28]
test eax, eax
je 0x71ad25e8
mov ecx, dword [edi + 0x18bc]
push 0
mov dword [esp + 0x40], ecx
mov ecx, edi
push eax
call fcn.71ad3a5b
cmp esi, eax
jb 0x71ae0a16
mov eax, dword [ebp + 8]
mov edx, dword [esp + 0x10]
mov ecx, dword [eax + 0x28]
movzx eax, byte [ecx + 2]
add edx, eax
movzx eax, byte [ecx + 3]
add ebx, eax
mov dword [esp + 0x10], edx
movzx eax, byte [ecx + 6]
or dword [esp + 0x18], eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [ebp + 8]
mov dword [edi + 0x18bc], eax
mov eax, dword [ecx + 0x2c]
test eax, eax
je 0x71ad2638
mov ecx, dword [edi + 0x18bc]
push 1
mov dword [esp + 0x40], ecx
mov ecx, edi
push eax
call fcn.71ad3a5b
cmp esi, eax
jae 0x71ad2609
mov esi, eax
mov eax, dword [ebp + 8]
mov edx, dword [esp + 0x10]
mov ecx, dword [eax + 0x2c]
movzx eax, byte [ecx + 2]
add edx, eax
movzx eax, byte [ecx + 3]
add ebx, eax
mov dword [esp + 0x10], edx
movzx eax, byte [ecx + 6]
or dword [esp + 0x18], eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [ebp + 8]
mov dword [edi + 0x18bc], eax
mov al, byte [ecx + 0x42]
and al, 7
cmp al, 2
je 0x71b0286d
add ebx, 3
mov eax, dword [ecx + 0x10]
inc esi
and eax, 0x30000000
jne 0x71ae33ce
cmp eax, 0x10000000
mov eax, dword [esp + 0x18]
je 0x71af1926
test dword [ecx + 0x10], 0x1000000
jne 0x71ad2680
add edx, 9
add esi, 5
or eax, 7
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], eax
cmp byte [esp + 0xc], 0
je 0x71ac9196
push ecx
mov ecx, edi
call fcn.71b0025c
jmp 0x71ac9196
mov edx, dword [esp + 0x10]
jmp 0x71adc661
cmp edi, 0x50
jne 0x71ad42b0
push 0xa
pop edx
push 5
jmp 0x71adc6ac
call fcn.71ac90c3
cmp byte [esp + 0xc], 0
mov esi, eax
mov dword [esp + 0x14], esi
jne 0x71b0c3cb
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
mov ecx, ebx
push eax
call fcn.71ad1b28
test al, al
jne 0x71adf327
cmp byte [esp + 0xe], 0x2d
mov ebx, dword [esp + 0x24]
je 0x71ac92a9
movzx eax, byte [ebx + 2]
add dword [esp + 0x10], eax
jmp 0x71ac92a9
sub edi, 1
je 0x71aea8ed
sub edi, 5
jne 0x71af013e
movsx eax, byte [ebx + 0x24]
cmp eax, dword [ebx + 0x24]
jne 0x71adbc19
xor eax, eax
inc eax
mov ebx, eax
mov dword [esp + 0x10], eax
jmp 0x71ad0d4a
mov eax, dword [esp + 0x24]
mov cl, byte [eax]
test cl, cl
je 0x71ac9323
cmp cl, 2
ja 0x71adb39b
mov ecx, dword [ebp + 8]
mov byte [esp + 0x30], 1
or dword [ecx + 0x10], 0x20
jmp 0x71ac9326
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], edx
jmp 0x71ac9374
mov eax, esi
mov esi, dword [esp + 0x28]
jmp 0x71ac93a3
je 0x71b08b8a
cmp edi, 0x20
jb 0x71ac927e
cmp edi, 0x21
jbe 0x71ad9f0f
cmp edi, 0x22
jne 0x71b08b5f
cmp byte [esp + 0xc], 0
jne 0x71b0c9a7
mov eax, dword [ebp + 8]
mov esi, ecx
mov dword [esp + 0x10], esi
mov dword [esp + 0x28], 1
mov eax, dword [eax + 0x10]
and eax, 0x10000000
jne 0x71b122af
cmp byte [esp + 0xd], 0xa
je 0x71ad9ef4
test eax, eax
je 0x71ac927e
add esi, ecx
mov dword [esp + 0x18], 5
mov dword [esp + 0x10], esi
mov dword [esp + 0x28], 0xfffffffd
jmp 0x71ac927e
cmp byte [esp + 0xc], 0
jne 0x71b0c9a7
mov eax, dword [ebp + 8]
test dword [eax + 0x10], 0x10000000
je 0x71ac927e
add dword [esp + 0x10], 3
add dword [esp + 0x2c], 3
jmp 0x71ac927e
cmp cl, 0x1d
jne 0x71ac9323
mov eax, dword [eax + 0x24]
test byte [eax + 0x10], 0x1f
mov eax, dword [esp + 0x20]
jne 0x71aefe88
test byte [eax + 0x10], 1
jne 0x71aefe88
movzx eax, byte [eax]
test byte [eax + 0x627b450], 2
jne 0x71ac9323
jmp 0x71ad6695
mov dword [esp + 0x10], 1
push 4
pop ebx
jmp 0x71ad0d4a
mov al, byte [esp + 0xd]
push 3
pop ecx
push 2
pop ebx
sub al, bl
mov dword [esp + 0x10], ecx
cmp al, 5
ja 0x71ac9175
push 4
pop ecx
push 3
mov dword [esp + 0x14], ecx
pop ebx
jmp 0x71ac9175
mov ecx, dword [esp + 0x24]
movzx eax, byte [ecx + 2]
add edx, eax
movzx eax, byte [ecx + 3]
mov dword [esp + 0x10], edx
add ebx, eax
jmp 0x71ac9196
cmp edi, 0x47
jne 0x71ad42e8
push 2
pop edx
push edx
pop ebx
jmp 0x71adc661
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x2c]
mov eax, dword [eax + 0x10]
shr eax, 4
not al
and eax, 0xffffff01
test byte [ecx + 0x10], 0xf
mov ecx, dword [ebp + 8]
mov dword [esp + 0x34], eax
jne 0x71ae624b
test al, al
je 0x71ac9395
cmp edi, 0x40
ja 0x71af6b7b
cmp edi, 0x3b
jae 0x71aef58f
cmp edi, 0x20
jne 0x71b06dc0
mov eax, dword [esp + 0x20]
mov dword [ecx + 0x24], eax
mov dword [ecx + 0x28], edx
cmp byte [edx + 8], 0
jne 0x71addf6c
cmp byte [eax + 8], 0
je 0x71ac9395
mov eax, dword [esp + 0x1c]
mov byte [eax + 0x714], 1
jmp 0x71ac9395
cmp edi, 0x2f
jbe 0x71ad9f0f
cmp edi, 0x41
je 0x71ae08fd
cmp edi, 0x43
jne 0x71ac927e
mov esi, dword [edx + 0x18bc]
mov ecx, edx
push ebx
call fcn.71ac90c3
mov edi, dword [esp + 0x20]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
mov ecx, eax
push edi
mov dword [eax + 0x18bc], esi
call fcn.71ac90c3
mov esi, dword [esp + 0x14]
cmp esi, eax
jb 0x71ae0224
jne 0x71adec18
inc esi
movzx eax, byte [ebx + 6]
movzx edx, byte [edi + 6]
movzx ecx, byte [edi + 2]
or edx, eax
movzx eax, byte [ebx + 2]
movzx ebx, byte [edi + 3]
add ecx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], ecx
movzx eax, byte [eax + 3]
jmp 0x71adc673
mov eax, dword [esp + 0x24]
movzx eax, byte [eax + 1]
test byte [eax + 0x627b5f0], 4
jne 0x71b1485c
mov eax, dword [esp + 0x24]
mov al, byte [eax + 1]
sub al, 0xa
cmp al, 1
mov eax, dword [esp + 0x10]
jbe 0x71b07cbc
mov ecx, dword [ebp + 8]
test dword [ecx + 0x10], 0x40000000
jne 0x71ac9326
add eax, 3
mov dword [esp + 0x10], eax
jmp 0x71ac9326
mov eax, dword [esp + 0x20]
mov ecx, ebx
push eax
call fcn.71ac90c3
cmp byte [esp + 0xe], 0x2d
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
jne 0x71af47a9
movzx edx, byte [eax + 2]
movzx ebx, byte [eax + 3]
mov dword [esp + 0x10], edx
jmp 0x71ac9302
mov esi, eax
jmp 0x71adec18
mov esi, dword [edx + 0x18bc]
mov ecx, edx
push ebx
call fcn.71ac90c3
mov eax, dword [esp + 0x1c]
mov ecx, eax
mov edi, dword [esp + 0x20]
push edi
mov dword [eax + 0x18bc], esi
call fcn.71ac90c3
jmp 0x71ae0224
mov esi, eax
jmp 0x71ac9196
mov esi, eax
jmp 0x71ad25b9
je 0x71aead7f
sub edi, 0xb
je 0x71affd0c
sub edi, ebx
jne 0x71af4241
mov eax, dword [ebp + 8]
xor ecx, ecx
cmp dword [eax + 0x10], ecx
jge 0x71ae0ae9
inc esi
mov edx, ecx
mov ebx, ecx
jmp 0x71adc661
push eax
mov ecx, edi
call fcn.71ac90c3
test eax, eax
jne 0x71ae93f1
mov eax, dword [esp + 0x3c]
mov ecx, dword [ebp + 8]
movzx edx, byte [eax + 2]
movzx ebx, byte [eax + 3]
add edx, 5
movzx eax, byte [eax + 6]
add ebx, 3
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], eax
jmp 0x71ad2596
add edx, 6
add ebx, 2
mov dword [esp + 0x10], edx
jmp 0x71ad2657
push esi
call fcn.71ad1b28
test al, al
jne 0x71ac9192
cmp byte [esp + 0xf], 7
jne 0x71af5d61
movzx eax, byte [esi + 3]
add ebx, eax
jmp 0x71ac9192
mov esi, ecx
jmp 0x71ac9196
mov dword [esp + 0x10], eax
mov ebx, eax
jmp 0x71ac9187
xor eax, eax
inc eax
mov dword [esp + 0x14], eax
jmp 0x71ae5cfa
push 4
pop esi
mov dword [esp + 0x10], esi
mov ebx, ecx
jmp 0x71ad0dc7
mov eax, dword [esp + 0x14]
test byte [eax + 0x10], 0xf
jne 0x71ac9395
mov edx, dword [esp + 0x2c]
mov al, byte [esp + 0x34]
test byte [edx + 0x10], 3
mov edx, dword [esp + 0x24]
je 0x71addf2f
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
mov al, byte [eax + 0x627b450]
and al, 1
neg al
sbb al, al
and al, byte [esp + 0x34]
jmp 0x71addf2f
mov esi, eax
jmp 0x71ae2a3d
movzx eax, byte [ecx + 1]
test byte [eax + 0x627b5f0], 4
jne 0x71b286cb
xor ebx, ebx
xor edx, edx
inc ebx
jmp 0x71adc661
mov al, byte [esp + 0xd]
xor edi, edi
push 4
inc edi
mov dword [esp + 0x14], 3
sub al, 2
mov dword [esp + 0x18], edi
pop ecx
mov ebx, ecx
cmp al, 5
ja 0x71ac9187
mov dword [esp + 0x10], ecx
push 5
pop ebx
jmp 0x71ac9187
push 2
xor edx, edx
pop ebx
inc edx
cmp byte [esp + 0xc], 0
push 6
pop edi
jne 0x71b0c102
movzx eax, byte [ecx + 1]
test byte [eax + 0x627b5f0], 4
jne 0x71b0c102
mov ecx, dword [ebp + 8]
mov ah, byte [ecx + 1]
mov al, ah
sub al, 0xa
cmp al, 1
jbe 0x71b0a696
test dword [ecx + 0x10], 0x10000000
je 0x71adc661
add edx, edi
add ebx, edi
jmp 0x71adc661
add ebx, 4
jmp 0x71ad0e6e
cmp byte [eax], 7
je 0x71ac9348
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
add edx, 3
or eax, 2
mov dword [esp + 0x10], edx
cmp byte [ecx + 1], 0xa
mov dword [esp + 0x18], eax
jne 0x71ac9348
add dword [esp + 0x28], 5
add edx, 9
add esi, 5
mov dword [esp + 0x10], edx
add ebx, 4
or eax, 7
mov dword [esp + 0x18], eax
jmp 0x71ac9348
mov edi, dword [ebx + 0x24]
xor esi, esi
inc esi
cmp dword [ebx + 0x10], ecx
jl 0x71b0905f
movzx eax, byte [edi + 6]
movzx ebx, byte [edi + 3]
movzx ecx, byte [edi + 2]
add ebx, 2
mov edi, dword [ebp + 8]
add ecx, 3
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], ecx
mov eax, dword [edi + 0x28]
mov dword [esp + 0x3c], eax
test eax, eax
je 0x71ac9199
push eax
mov ecx, edx
call fcn.71ac90c3
cmp esi, eax
jb 0x71b28703
mov ecx, dword [esp + 0x3c]
movzx eax, byte [ecx + 6]
or dword [esp + 0x18], eax
movzx eax, byte [ecx + 2]
add dword [esp + 0x10], eax
movzx eax, byte [ecx + 3]
add ebx, eax
jmp 0x71ac9199
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x2c]
mov dword [esp + 0x3c], eax
test eax, eax
je 0x71ad0de7
mov ecx, dword [esp + 0x1c]
push eax
call fcn.71ac90c3
cmp edi, eax
jb 0x71b286a9
mov ecx, dword [esp + 0x3c]
movzx eax, byte [ecx + 2]
add eax, 3
add esi, eax
movzx eax, byte [ecx + 3]
add eax, 3
mov dword [esp + 0x10], esi
add ebx, eax
jmp 0x71ad0de7
movzx eax, byte [edi + 2]
add ecx, eax
movzx eax, byte [edi + 3]
mov dword [esp + 0x10], ecx
add ebx, eax
jmp 0x71ad0e5a
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x30]
je 0x71b06b0c
cmp byte [eax], 0x2a
jne 0x71b06b0c
mov esi, 0x80000000
or dword [eax + 0x10], esi
cmp byte [esp + 0xc], 0
je 0x71ac9192
mov eax, dword [eax + 0x24]
jmp 0x71ad0f17
mov al, byte [edi + 0x627e909]
mov byte [ecx], al
jmp 0x71addf52
mov ecx, dword [ebp + 8]
jmp 0x71ac932a
sub edi, 1
jne 0x71ae5db9
push 8
mov dword [esp + 0x14], 2
jmp 0x71adbc23
cmp dword [esp + 0x28], esi
jne 0x71ac9354
movzx eax, byte [edx]
test byte [eax + 0x627b450], 1
je 0x71ac9354
movzx eax, byte [ecx]
mov al, byte [eax + 0x627b450]
cmp al, 0x80
jae 0x71af0389
test al, 0x10
je 0x71ac9354
mov dword [esp + 0x28], 1
jmp 0x71ac9354
or eax, 1
mov dword [esp + 0x18], eax
jmp 0x71ad2666
sub edi, ebx
je 0x71affd0c
dec edi
sub edi, ebx
jne 0x71b0e8fa
push 3
inc esi
mov dword [esp + 0x18], esi
pop esi
push 2
pop ebx
push ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x14], esi
call fcn.71ad1b28
mov esi, dword [esp + 0x14]
test al, al
jne 0x71ac9196
jmp 0x71ad42b0
movzx ecx, byte [eax + 6]
or dword [esp + 0x18], ecx
jmp 0x71adf346
mov esi, dword [esp + 0x14]
jmp 0x71ad42b0
cmp edi, 0x42
jb 0x71af6b9b
cmp edi, 0x43
jbe 0x71ac9395
cmp edi, 0x46
je 0x71ac9395
cmp edi, 0x48
je 0x71ac9395
cmp dword [esp + 0x38], 0
mov eax, dword [esp + 0x3c]
jne 0x71b159da
or eax, 0x20
mov dword [ecx + 0x10], eax
cmp byte [edx + 8], 0
jne 0x71addf6c
mov eax, dword [esp + 0x20]
jmp 0x71addf62
xor edi, edi
inc edi
mov dword [esp + 0x14], edi
jmp 0x71ad0da9
push 2
pop ecx
push ecx
jmp 0x71adc657
push dword [ebx + 0x24]
mov ecx, edx
call fcn.71ac90c3
push dword [ebx + 0x28]
mov esi, dword [esp + 0x20]
mov edi, eax
mov eax, dword [ebx + 0x24]
mov ecx, esi
mov dword [esp + 0x18], edi
movzx eax, byte [eax + 3]
mov dword [esp + 0x34], eax
call fcn.71ac90c3
cmp edi, eax
jb 0x71b286ef
mov eax, dword [ebx + 0x28]
mov ecx, esi
push dword [ebx + 0x2c]
movzx eax, byte [eax + 3]
add dword [esp + 0x34], eax
call fcn.71ac90c3
cmp edi, eax
jb 0x71b286fa
mov eax, dword [ebx + 0x2c]
mov esi, 0xff
mov ecx, dword [esp + 0x30]
add ecx, 5
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], 1
movzx ebx, byte [eax + 3]
add ebx, ecx
jmp 0x71ac9192
mov dword [esp + 0x10], 3
push 4
jmp 0x71aea915
or dword [eax + 0x10], esi
jmp 0x71ad0f23
inc esi
jmp 0x71ad42b0
mov dword [ecx + 0x1544], eax
jmp 0x71ac91cb
push ecx
mov ecx, edx
call fcn.71b0025c
jmp 0x71ac9192
mov eax, dword [ebx + 0x24]
or eax, dword [ebx + 0x28]
mov dword [esp + 0x14], ecx
je 0x71b002c0
cmp dword [ebx + 0x24], ecx
jne 0x71afaf94
cmp dword [ebx + 0x28], 0x3ff00000
jne 0x71afaf94
xor eax, eax
inc eax
jmp 0x71ae5cfa
test edi, edi
je 0x71ac9192
mov al, byte [edx]
cmp al, 0x22
je 0x71b0083d
cmp al, 0x2a
jne 0x71ac9192
mov ecx, dword [edx + 0x24]
mov al, byte [ecx]
cmp al, 0xc
jne 0x71b0087d
mov esi, 0x80000000
mov eax, ecx
or dword [edx + 0x10], esi
jmp 0x71ad0f17
cmp al, 0x22
jne 0x71ac9192
mov eax, dword [ecx + 0x24]
cmp byte [eax], 0xc
je 0x71b00846
jmp 0x71ac9192
mov eax, dword [ecx + 0x4c]
mov ecx, edi
push eax
mov dword [esp + 0x40], eax
call fcn.71ac90c3
cmp esi, eax
jb 0x71b0f02e
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x10]
add edx, 3
movzx eax, byte [ecx + 2]
add edx, eax
movzx eax, byte [ecx + 3]
add ebx, eax
mov dword [esp + 0x10], edx
movzx eax, byte [ecx + 6]
or dword [esp + 0x18], eax
mov ecx, dword [ebp + 8]
jmp 0x71ad2648
mov eax, ecx
jmp 0x71ac91e6
sub edi, 1
jne 0x71b05ba9
mov ebx, dword [ebp + 8]
mov ecx, dword [esp + 0x1c]
push dword [ebx + 0x24]
call fcn.71ac90c3
mov ecx, dword [ebx + 0x24]
mov esi, eax
movzx eax, byte [ecx + 6]
or dword [esp + 0x18], eax
movzx edx, byte [ecx + 2]
movzx ebx, byte [ecx + 3]
inc edx
inc ebx
jmp 0x71adc661
sub edi, 1
jne 0x71ad42b0
mov ebx, dword [ebp + 8]
mov ecx, dword [esp + 0x1c]
push dword [ebx + 0x24]
call fcn.71ac90c3
mov ecx, dword [ebx + 0x24]
mov esi, eax
movzx eax, byte [ecx + 6]
or dword [esp + 0x18], eax
movzx edx, byte [ecx + 2]
movzx ebx, byte [ecx + 3]
jmp 0x71adc661
mov eax, dword [esp + 0x28]
jmp 0x71aeec4e
cmp edi, 0x21
je 0x71b06de5
cmp edi, 0x22
je 0x71addf52
cmp edi, 0x26
jbe 0x71af6b9b
cmp edi, 0x29
jbe 0x71addf52
jmp 0x71af6b9b
cmp byte [esp + 0xc], 0
je 0x71ac9395
jmp 0x71af6b9b
mov dword [esp + 0x10], ecx
mov dword [esp + 0x2c], ecx
jmp 0x71ac9260
add ecx, ecx
add ebx, ebx
mov dword [esp + 0x10], ecx
jmp 0x71ac9187
add eax, eax
add ebx, ebx
mov dword [esp + 0x10], eax
jmp 0x71adec6f
sub esi, eax
and dword [esp + 0x28], 0
mov dword [esp + 0x14], esi
jmp 0x71ac92a9
cmp edi, 0x23
je 0x71b08b8a
cmp edi, 0x24
jne 0x71ac927e
cmp byte [esi], 7
jne 0x71b08b8a
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x71b08b8a
mov eax, ecx
neg eax
and eax, ecx
cmp ecx, eax
je 0x71ac927e
push 5
pop eax
cmp byte [esp + 0xc], 0
jne 0x71b0eaff
mov dword [esp + 0x10], 0x14
mov dword [esp + 0x18], eax
jmp 0x71ad9f02
push edi
mov ecx, edx
call fcn.71ac90c3
mov edx, dword [esp + 0x1c]
lea esi, [eax + 1]
jmp 0x71aee764
cmp esi, dword [esp + 0x28]
seta al
jmp 0x71ac938d
movzx eax, ah
test byte [eax + 0x627b5f0], 2
jne 0x71b286a0
add edx, 2
add ebx, 3
jmp 0x71aeadb6
movzx eax, byte [ecx + 1]
mov edx, edi
mov cl, byte [esp + 0xc]
mov ebx, edi
mov dword [esp + 0x10], edx
mov al, byte [eax + 0x627b5f0]
shr al, 2
and al, 1
cmp cl, al
je 0x71aeada4
mov eax, dword [esp + 0x1c]
test cl, cl
je 0x71b0c595
push ecx
mov ecx, eax
call fcn.71b0025c
mov edx, dword [esp + 0x10]
jmp 0x71aeada4
mov ecx, dword [esp + 0x1c]
push 1
call fcn.71b0c071
jmp 0x71ac930d
dec byte [ebx + 8]
mov ebx, dword [esp + 0x1c]
mov ecx, ebx
push 1
call fcn.71b0c071
jmp 0x71ad6621
push 1
mov ecx, eax
call fcn.71b0c071
jmp 0x71b0c139
mov dword [esp + 0x10], eax
jmp 0x71ac927e
dec edi
sub edi, ebx
jne 0x71ad42b0
mov eax, dword [ebp + 8]
cmp dword [eax + 0x2c], 5
jne 0x71affd0c
cmp byte [eax + 1], 8
jne 0x71affd0c
mov ecx, dword [esp + 0x1c]
push ebx
call fcn.71b0c071
jmp 0x71affd0c
mov dword [esp + 0x10], 0x24
jmp 0x71ac927e
mov esi, eax
jmp 0x71b02884
push ecx
mov ecx, dword [esp + 0x20]
call fcn.71b0025c
mov eax, dword [ebp + 8]
cmp byte [eax + 1], 0xd
jne 0x71ad0dd5
inc dword [esp + 0x10]
mov esi, dword [esp + 0x10]
jmp 0x71ad0dd5
mov ecx, edx
call fcn.71ad9d42
cmp eax, esi
je 0x71ad0ee6
jmp 0x71ac9192
add dword [esp + 0x2c], 3
push 7
pop esi
mov dword [esp + 0x10], esi
jmp 0x71ad9ee5
mov ecx, dword [esp + 0x1c]
push 2
call fcn.71b0c071
or dword [esp + 0x18], 1
inc esi
inc dword [esp + 0x28]
jmp 0x71adec5a
and eax, 0xffffffdf
jmp 0x71af6bad
push dword [ebx + 0x24]
mov ecx, edx
call fcn.71ac90c3
cmp byte [ebx + 0x34], 0
mov esi, eax
mov eax, dword [ebx + 0x24]
mov edi, dword [esp + 0x1c]
movzx ecx, byte [eax + 2]
movzx eax, byte [eax + 3]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], eax
jbe 0x71b18adb
lea edx, [ebx + 0x28]
mov dword [esp + 0x3c], edx
push dword [edx]
mov ecx, edi
call fcn.71ac90c3
cmp esi, eax
jb 0x71b286db
mov edx, dword [esp + 0x3c]
mov ecx, dword [edx]
add edx, 4
mov dword [esp + 0x3c], edx
movzx eax, byte [ecx + 2]
add dword [esp + 0x2c], eax
movzx eax, byte [ecx + 3]
add dword [esp + 0x28], eax
mov ecx, dword [esp + 0x30]
movzx eax, byte [ebx + 0x34]
inc ecx
mov dword [esp + 0x30], ecx
cmp ecx, eax
jb 0x71b18a9c
cmp byte [esp + 0xc], 0
jne 0x71b286e2
movzx eax, byte [ebx + 0x34]
mov ecx, dword [esp + 0x2c]
add esi, eax
mov ebx, dword [esp + 0x28]
lea ecx, [ecx + eax*4]
add ecx, 2
add ebx, 2
mov dword [esp + 0x10], ecx
lea ebx, [ebx + eax*2]
jmp 0x71ac9196
xor esi, esi
inc esi
mov dword [esp + 0x10], esi
jmp 0x71adbc21
call fcn.71b21586
mov ecx, dword [esp + 0x1c]
jmp 0x71ac91b0
inc edx
add ebx, 2
jmp 0x71aeadb6
mov dword [esp + 0x14], eax
jmp 0x71aee7e3
cmp al, 0x22
jne 0x71ac9192
mov eax, dword [edx + 0x24]
cmp byte [eax], 0xc
je 0x71ad0f0d
jmp 0x71ac9192
mov ecx, dword [esp + 0x1c]
push 1
call fcn.71b0c071
jmp 0x71aea6f9
mov esi, eax
jmp 0x71b18aad
push ecx
mov ecx, edi
call fcn.71b0025c
jmp 0x71b18ae6
mov edi, eax
mov dword [esp + 0x14], eax
jmp 0x71afab72
mov dword [esp + 0x14], eax
jmp 0x71afab8f
mov esi, eax
jmp 0x71aee7a0
call fcn.71b21571
int3