Function at 0x100019f0
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x24
mov ecx, dword [esp + 0x30]
push ebx
mov ebx, dword [esp + 0x3c]
push ebp
mov ebp, dword [esp + 0x30]
mov eax, dword [ebp + 0x20]
push esi
xor esi, esi
mov dword [esp + 0x24], eax
add eax, 0xffffffdc
push edi
mov edi, dword [esp + 0x44]
mov dword [esp + 0x38], esi
mov dword [esp + 0x20], esi
cmp eax, 0x57
ja case.0x10001a2e.52
movzx eax, byte [eax + 0x1000268c]
lea edx, [esi + 0x65]
jmp dword [eax*4 + 0x10002648]
mov ecx, dword [ebp + 0x60]
mov edx, 1
push ecx
mov ecx, ebx
mov eax, edi
lea esi, [edx + 0x5d]
call fcn.10005f70
add esp, 4
test byte [ebp + 0x18], 0x80
je 0x10001a6c
mov eax, dword [ebp + 0x60]
movsx edx, word [ebp + 0x68]
push eax
mov ecx, ebx
mov eax, edi
mov esi, 0x72
call fcn.10005f70
add esp, 4
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x24
jmp fcn.10003aa0
mov ecx, dword [ebp + 0x60]
mov edx, 1
push ecx
mov ecx, ebx
mov eax, edi
lea esi, [edx + 0x23]
call fcn.10005f70
add esp, 4
test byte [ebp + 0x18], 0x80
je 0x10001a6c
mov eax, dword [ebp + 0x60]
movsx edx, word [ebp + 0x68]
push eax
mov ecx, ebx
mov eax, edi
mov esi, 0x61
jmp 0x10001a64
mov ecx, dword [ebp + 0x60]
mov edx, 1
push ecx
mov ecx, ebx
mov eax, edi
lea esi, [edx + 0x5d]
call fcn.10005f70
mov edx, dword [ebp + 0x60]
push edx
mov ecx, ebx
mov eax, edi
xor edx, edx
call fcn.10005f70
add esp, 8
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x24
jmp fcn.10003aa0
mov eax, dword [ebp + 0x60]
mov edx, 1
push eax
mov ecx, ebx
mov eax, edi
lea esi, [edx + 0x23]
call fcn.10005f70
mov ecx, dword [ebp + 0x60]
push ecx
mov ecx, ebx
mov eax, edi
xor edx, edx
call fcn.10005f70
add esp, 8
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x24
jmp fcn.10003aa0
mov eax, ebp
call fcn.10002ff0
mov eax, dword [ebp + 0x60]
call fcn.10005dd0
mov ebx, eax
cmp dword [ebp + 0x14], esi
jne 0x1000263d
mov edx, edi
push edx
push 0x72
mov edi, ebp
call fcn.10002750
mov eax, dword [esp + 0x50]
push eax
push ebx
push 0x61
mov eax, ebp
call fcn.100027b0
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov eax, ebp
call fcn.10002ff0
mov eax, dword [ebp + 0x60]
call fcn.10005dd0
mov edi, eax
cmp dword [ebp + 0x14], esi
jne 0x1000263d
mov ecx, dword [esp + 0x44]
push edi
push ecx
push 0x72
mov eax, ebp
call fcn.100027b0
push edi
push 0x61
mov edi, ebp
call fcn.10002750
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov eax, ebp
call fcn.10002ff0
mov eax, dword [ebp + 0x60]
call fcn.10005dd0
mov ebx, eax
cmp dword [ebp + 0x14], esi
jne 0x1000263d
mov edx, edi
push edx
push 0x72
mov edi, ebp
call fcn.10002750
mov esi, dword [esp + 0x50]
push esi
push ebx
push 0x61
mov eax, ebp
call fcn.100027b0
mov eax, dword [ebp + 0x60]
add esp, 0x14
call fcn.10005dd0
cmp dword [ebp + 0x14], 0
mov edi, eax
jne 0x1000263d
mov eax, dword [esp + 0x44]
push edi
push eax
push 0x72
mov eax, ebp
call fcn.100027b0
push edi
push 0x61
mov ebx, esi
mov edi, ebp
call fcn.10002750
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov eax, ebp
call fcn.10002ff0
mov eax, dword [ebp + 0x60]
call fcn.10005dd0
cmp dword [ebp + 0x14], 0
mov esi, eax
jne 0x1000263d
push esi
push edi
push 0x72
mov eax, ebp
call fcn.100027b0
push ebx
push esi
push 0x61
mov eax, ebp
call fcn.100027b0
mov eax, dword [ebp + 0x60]
add esp, 0x18
call fcn.10005dd0
cmp dword [ebp + 0x14], 0
mov ebx, eax
jne 0x1000263d
mov ecx, edi
push ecx
push 0x72
mov edi, ebp
call fcn.10002750
push ebx
mov ebx, dword [esp + 0x54]
push 0x61
call fcn.10002750
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
movzx edx, word [ebp + 0x24]
mov eax, ebp
mov dword [esp + 0x38], edx
call fcn.10003aa0
mov eax, dword [ebp + 0x60]
call fcn.10005dd0
mov edi, eax
mov eax, dword [ebp + 0x60]
call fcn.10005dd0
cmp dword [ebp + 0x14], 0
mov esi, eax
jne 0x1000263d
push esi
push edi
push 0x4c
push 0x29
push ebp
call fcn.10001740
push eax
push ebp
call fcn.10003100
mov eax, ebp
call fcn.10003aa0
mov eax, dword [esp + 0x54]
push eax
push esi
push edi
mov edi, ebp
call fcn.100033c0
add esp, 0x28
cmp dword [ebp + 0x14], 0
mov edx, eax
jne 0x1000263d
mov ecx, dword [ebp + 0x60]
mov eax, dword [esp + 0x44]
push ecx
mov ecx, ebx
mov esi, 0x4c
call fcn.10005f70
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov dword [ebp + 0x20], edx
cmp dword [ebp + 0x14], esi
jne 0x1000263d
pop edi
pop esi
mov dword [ebp + 0x14], 0xd
pop ebp
pop ebx
add esp, 0x24
ret
mov edx, dword [ebp + 0x18]
and dl, 3
cmp dl, 1
je 0x10001d38
mov dword [ebp + 0x20], 0x65
cmp dword [ebp + 0x14], esi
jne 0x1000263d
pop edi
pop esi
mov dword [ebp + 0x14], 8
pop ebp
pop ebx
add esp, 0x24
ret
mov eax, dword [ebp]
or dword [eax + 8], 0x20
movzx eax, word [ebp + 0x24]
mov edi, ebx
mov ebx, dword [esp + 0x44]
mov ecx, ebp
call fcn.10002f10
mov eax, dword [ebp + 0x64]
mov ecx, dword [ebp + 0x60]
push eax
push ecx
call fcn.10005970
add esp, 8
cmp dword [ebp + 0x14], esi
jne 0x1000263d
jmp 0x10001f62
cmp word [ebp + 0x24], 1
jne 0x10001d87
mov edi, ebx
mov ebx, dword [esp + 0x44]
mov esi, ebp
call fcn.10002b40
jmp 0x10001f62
push ebx
push edi
push ebp
call fcn.10002b80
add esp, 0xc
jmp 0x10001f62
test byte [ebp + 0x18], 0x40
je 0x10001da3
movsx eax, word [ebp + 0x68]
jmp 0x10001da6
or eax, 0xffffffff
mov edx, dword [ebp + 0x64]
push ebx
push edi
push eax
mov eax, dword [ebp + 0x60]
push edx
push eax
call fcn.10005ac0
add esp, 0x14
jmp 0x10001f62
cmp ecx, 0x4c
jne 0x10001ea5
mov dword [esp + 0x30], esi
mov dword [esp + 0x28], 0x70
mov eax, ebp
call fcn.10003aa0
mov eax, dword [ebp + 0x60]
call fcn.10005dd0
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x60]
call fcn.10005dd0
mov dword [esp + 0x24], eax
cmp dword [ebp + 0x14], esi
jne 0x1000263d
mov ecx, dword [ebp + 0x60]
xor edx, edx
push ecx
mov ecx, dword [esp + 0x1c]
mov eax, edi
lea esi, [edx + 0x6e]
call fcn.10005f70
mov edx, dword [ebp + 0x60]
mov eax, dword [esp + 0x28]
push edx
mov ecx, ebx
xor edx, edx
call fcn.10005f70
add esp, 8
cmp dword [ebp + 0x14], 0
jne 0x1000263d
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
push eax
push ecx
push 0x70
push 0x29
push ebp
call fcn.10001740
mov esi, eax
add esp, 0x14
mov eax, ebp
mov dword [esp + 0x38], esi
call fcn.10003aa0
cmp dword [ebp + 0x14], 0
jne 0x1000263d
cmp dword [esp + 0x30], 0
je 0x10001f69
mov edx, dword [ebp + 0x30]
mov eax, dword [esp + 0x20]
mov dword [edx + eax*4], esi
movsx edx, byte [esi + 1]
push ebx
mov ecx, edi
push ecx
or edx, 8
push edx
push 0x28
mov edi, ebp
call fcn.10003060
add esp, 0x10
cmp dword [ebp + 0x14], 0
jne 0x1000263d
mov ecx, dword [esp + 0x20]
mov dword [eax + 4], ecx
mov dword [eax + 0xc], esi
mov dword [esp + 0x38], eax
jmp 0x10001f69
movzx eax, word [ebp + 0x24]
mov dword [esp + 0x30], eax
cmp eax, esi
je 0x10001dcb
inc dword [ebp + 0x2c]
mov eax, dword [ebp + 0x2c]
mov dword [esp + 0x20], eax
cmp eax, dword [ebp + 0x34]
jb 0x10001dd3
mov esi, ebp
call fcn.10001450
xor esi, esi
jmp 0x10001dd3
mov edi, 6
cmp ecx, 0x4c
jne 0x10001eeb
mov dword [ebp + 0x20], edx
cmp dword [ebp + 0x14], esi
jne 0x10001eeb
mov dword [ebp + 0x14], edi
movzx eax, word [ebp + 0x24]
cmp eax, dword [ebp + 0x34]
jb 0x10001eff
mov dword [ebp + 0x20], edx
cmp dword [ebp + 0x14], esi
jne 0x10001eff
mov dword [ebp + 0x14], edi
mov ecx, dword [ebp + 0x30]
cmp dword [ecx + eax*4], esi
jne 0x10001f16
mov dword [ebp + 0x20], edx
cmp dword [ebp + 0x14], esi
jne 0x1000263d
mov dword [ebp + 0x14], edi
cmp dword [ebp + 0x14], esi
jne 0x1000263d
mov edx, dword [esp + 0x44]
push ebx
push edx
push 0x10
push 0x62
mov edi, ebp
call fcn.10003060
add esp, 0x10
mov dword [esp + 0x38], eax
cmp dword [ebp + 0x14], esi
jne 0x1000263d
movzx ecx, word [ebp + 0x24]
mov dword [eax + 4], ecx
mov eax, dword [ebp + 0x60]
xor edx, edx
mov dword [esp + 0x20], ecx
push eax
mov eax, dword [esp + 0x48]
mov ecx, ebx
lea esi, [edx + 0x6e]
call fcn.10005f70
add esp, 4
mov eax, ebp
call fcn.10003aa0
mov eax, dword [ebp + 0x20]
add eax, 0xffffffd6
cmp eax, 0x51
ja case.0x10001f7f.44
movzx ecx, byte [eax + 0x100026f8]
jmp dword [ecx*4 + 0x100026e4]
xor ebx, ebx
mov esi, 0x100
xor eax, eax
cmp word [ebp + 0x24], ax
mov dword [esp + 0x1c], ebx
sete al
mov dword [esp + 0x14], esi
inc eax
mov dword [esp + 0x10], eax
mov eax, ebp
call fcn.10003aa0
mov edi, dword [esp + 0x38]
test edi, edi
je 0x100020d9
movsx ecx, byte [edi + 1]
jmp 0x100020db
mov ebx, 1
jmp 0x10001f88
xor ebx, ebx
lea esi, [ebx + 1]
jmp 0x10001f8d
mov eax, ebp
call fcn.10003aa0
mov edi, ebp
call fcn.10002800
cmp dword [ebp + 0x20], 0x2c
mov ebx, eax
mov dword [esp + 0x1c], ebx
jne 0x1000203e
mov eax, ebp
call fcn.10003aa0
test eax, eax
je 0x1000203e
cmp dword [ebp + 0x20], 0x64
jne 0x10002001
call fcn.10002800
mov esi, eax
jmp 0x10002006
mov esi, 0x100
cmp ebx, esi
mov dword [esp + 0x14], esi
jle 0x1000202e
cmp dword [ebp + 0x14], 0
mov dword [ebp + 0x20], 0x65
jne 0x1000263d
pop edi
pop esi
mov dword [ebp + 0x14], 0xa
pop ebp
pop ebx
add esp, 0x24
ret
xor eax, eax
cmp word [ebp + 0x24], ax
sete al
inc eax
mov dword [esp + 0x10], eax
jmp 0x1000204c
mov esi, ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], 0
cmp dword [ebp + 0x20], 0x7d
jne 0x1000200e
mov eax, ebp
call fcn.10003aa0
test ebx, ebx
jne 0x10001faa
test esi, esi
jne 0x10001faa
mov eax, dword [esp + 0x38]
test eax, eax
je 0x1000207b
push eax
push ebp
call fcn.10003100
add esp, 8
cmp dword [esp + 0x28], 0x28
jne 0x10002090
mov edx, dword [ebp + 0x30]
mov eax, dword [esp + 0x20]
mov dword [edx + eax*4], 0
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x44]
mov eax, dword [ebp + 0x60]
call fcn.10006b50
mov ecx, dword [ebp + 0x60]
push ecx
xor edx, edx
mov ecx, esi
mov eax, edi
lea esi, [edx + 0x6e]
call fcn.10005f70
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov esi, 1
mov ebx, esi
mov dword [esp + 0x14], esi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], 0
jmp 0x10001faa
xor ecx, ecx
mov edx, dword [esp + 0x4c]
movsx eax, byte [edx + 1]
or eax, ecx
or eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x30], eax
cmp ecx, 0x28
je 0x10002150
cmp ecx, 0x62
je 0x10002150
mov ecx, eax
and ecx, 1
add ecx, ecx
and ecx, eax
add ecx, ecx
or ecx, eax
test cl, 0x1c
jne 0x10002150
cmp ebx, 1
jne 0x10002116
cmp esi, ebx
je 0x1000212f
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
push esi
push ebx
push edx
push eax
push ebp
call fcn.10002860
mov eax, dword [esp + 0x44]
add esp, 0x14
test edi, edi
je 0x10002141
push edi
push ebp
call fcn.10003100
mov eax, dword [esp + 0x38]
add esp, 8
mov ecx, dword [esp + 0x4c]
pop edi
pop esi
pop ebp
mov byte [ecx + 1], al
pop ebx
add esp, 0x24
ret
test edi, edi
jne 0x10002179
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
push edx
push eax
push edi
push 0x3d
mov edi, ebp
call fcn.10003060
add esp, 0x10
cmp dword [ebp + 0x14], 0
mov dword [esp + 0x38], eax
jne 0x1000263d
mov eax, dword [ebp + 0x60]
call fcn.10005dd0
mov esi, eax
mov eax, dword [ebp + 0x60]
call fcn.10005dd0
cmp dword [ebp + 0x14], 0
mov ebx, eax
jne 0x1000263d
mov ecx, dword [ebp + 0x60]
mov edi, dword [esp + 0x44]
push esi
push ecx
mov eax, edi
call fcn.100068f0
mov edx, dword [esp + 0x50]
mov eax, dword [ebp + 0x60]
push edx
push eax
call fcn.10006570
add esp, 0x10
cmp dword [ebp + 0x14], 0
jne 0x1000263d
mov eax, dword [esp + 0x38]
mov dword [eax + 0x14], esi
mov dword [eax + 0x18], ebx
mov eax, dword [ebp + 0x60]
call fcn.10005dd0
mov esi, eax
mov eax, dword [ebp + 0x60]
mov dword [esp + 0x18], esi
call fcn.10005dd0
cmp dword [ebp + 0x14], 0
mov ebx, eax
mov dword [esp + 0x24], ebx
jne 0x1000263d
mov ecx, dword [ebp + 0x60]
push ecx
xor edx, edx
mov ecx, esi
mov eax, edi
lea esi, [edx + 0x6e]
call fcn.10005f70
mov edx, dword [ebp + 0x60]
push edx
mov ecx, ebx
mov eax, edi
xor edx, edx
call fcn.10005f70
add esp, 8
cmp dword [ebp + 0x14], 0
jne 0x1000263d
mov edx, dword [esp + 0x10]
mov ecx, edx
and ecx, 3
mov dword [esp + 0x2c], ecx
jne 0x1000223a
mov eax, dword [esp + 0x38]
movsx ecx, byte [eax + 1]
and ecx, 3
mov esi, dword [esp + 0x38]
movsx eax, byte [esi + 1]
or eax, edx
mov edx, dword [esp + 0x48]
push edx
mov edx, edi
push edx
mov edx, eax
and edx, 1
add edx, edx
and edx, eax
add edx, edx
and eax, 0xfffffffc
or edx, eax
or edx, ecx
push edx
push 0x2e
mov edi, ebp
call fcn.10003060
add esp, 0x10
cmp dword [ebp + 0x14], 0
mov ebx, eax
jne 0x1000263d
lea eax, [ebx + 0xc]
mov dword [eax], esi
mov esi, dword [esp + 0x4c]
mov ecx, dword [esi + 0x14]
movsx edx, byte [esi + 1]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x44]
push eax
push ecx
push edx
push 0x3d
call fcn.10003060
add esp, 0x10
mov dword [esi + 0xc], eax
cmp dword [ebp + 0x14], 0
jne 0x1000263d
cmp dword [esp + 0x28], 0x62
mov byte [esi], 0x2e
mov dword [esi + 0x10], ebx
jne 0x100022f4
mov ebx, dword [esp + 0x38]
mov esi, dword [ebx + 0x18]
mov edi, dword [ebx + 0x14]
mov eax, dword [ebp + 0x60]
call fcn.10006b50
mov eax, dword [ebp + 0x30]
mov ecx, dword [esp + 0x20]
mov edx, dword [eax + ecx*4]
mov eax, dword [edx + 0x18]
mov ecx, dword [ebx + 0x18]
mov edi, dword [edx + 0x14]
push eax
mov eax, dword [ebx + 0x14]
mov ebx, dword [ebp + 0x60]
call fcn.10006be0
add esp, 4
cmp dword [ebp + 0x14], 0
jne 0x1000263d
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x38]
test edi, edi
jne 0x100023da
mov ecx, dword [ebp + 0x60]
mov eax, dword [esp + 0x24]
push ecx
mov ecx, dword [ebx + 0x18]
xor edx, edx
lea esi, [edi + 0x6e]
call fcn.10005f70
mov ecx, dword [esp + 0x30]
add esp, 4
test ecx, ecx
jne 0x1000232b
movsx ecx, byte [ebx + 1]
and ecx, 3
movsx eax, byte [ebx + 1]
or eax, dword [esp + 0x10]
mov edx, dword [ebx + 0x18]
mov esi, eax
and esi, 1
add esi, esi
and esi, eax
and eax, 0xfffffffc
add esi, esi
or esi, eax
mov eax, dword [esp + 0x44]
push edx
push eax
or esi, ecx
push esi
push 0x7c
mov edi, ebp
call fcn.10003060
add esp, 0x10
cmp dword [ebp + 0x14], 0
mov dword [esp + 0x1c], eax
jne 0x1000263d
mov edx, dword [esp + 0x24]
add eax, 0xc
mov dword [eax], ebx
mov ecx, dword [ebx + 0x18]
push ecx
push edx
and esi, 3
push esi
push 0x7c
mov dword [esp + 0x30], eax
call fcn.10003060
mov ecx, dword [esp + 0x2c]
add esp, 0x10
mov dword [ecx + 0x10], eax
cmp dword [ebp + 0x14], 0
jne 0x1000263d
mov edx, dword [ebx + 0x18]
mov eax, dword [esp + 0x24]
push edx
push eax
push 0
push 0x3d
call fcn.10003060
mov ecx, dword [esp + 0x2c]
mov edx, dword [ecx + 0x10]
add esp, 0x10
mov dword [edx + 0xc], eax
cmp dword [ebp + 0x14], 0
jne 0x1000263d
mov eax, dword [esp + 0x30]
mov dword [eax], ecx
mov ecx, dword [esp + 0x20]
mov edi, 1
mov dword [esp + 0x30], ecx
mov dword [esp + 0x1c], edi
cmp dword [esp + 0x28], 0x62
jne 0x10002457
mov edx, dword [ebp + 0x60]
mov ecx, dword [ebx + 0x14]
mov eax, dword [esp + 0x18]
push edx
xor edx, edx
lea esi, [edx + 0x6e]
call fcn.10005f70
mov esi, dword [esp + 0x18]
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x14]
push esi
push edi
push eax
push ecx
push ebp
call fcn.10002860
add esp, 0x18
cmp dword [esp + 0x2c], 0
mov word [ebx + 8], di
mov word [ebx + 0xa], si
je 0x10002426
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x38], edx
jmp 0x10002431
movsx eax, byte [ebx + 1]
and eax, 3
mov dword [esp + 0x38], eax
mov cl, byte [ebx + 1]
mov al, cl
or al, byte [esp + 0x10]
mov dl, al
and dl, 1
add dl, dl
and dl, al
add dl, dl
and al, 0xfc
or dl, al
or dl, cl
or dl, byte [esp + 0x38]
mov byte [ebx + 1], dl
jmp 0x10002546
cmp edi, 1
jne 0x1000247f
cmp dword [esp + 0x14], edi
jne 0x1000247f
mov eax, dword [ebp + 0x60]
mov ecx, dword [ebx + 0x14]
push eax
mov eax, dword [esp + 0x1c]
xor edx, edx
lea esi, [edi + 0x6d]
call fcn.10005f70
add esp, 4
jmp 0x10002546
mov esi, dword [esp + 0x38]
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x18]
mov eax, dword [esp + 0x18]
mov ebx, dword [ebp + 0x60]
push edx
mov edi, ecx
call fcn.10006be0
mov eax, dword [esp + 0x18]
add esp, 4
cmp eax, 0x100
jne 0x100024a8
jmp 0x100024a9
dec eax
mov ecx, dword [esi + 0x14]
mov edx, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x20]
dec eax
push eax
push ecx
push edx
push ebp
call fcn.10002860
mov ecx, dword [esp + 0x40]
add esp, 0x14
test ecx, ecx
jne 0x100024d1
movsx ecx, byte [esi + 1]
and ecx, 3
movsx eax, byte [esi + 1]
or eax, dword [esp + 0x10]
mov edi, ebp
mov ebx, eax
and ebx, 1
add ebx, ebx
and ebx, eax
and eax, 0xfffffffc
add ebx, ebx
or ebx, eax
mov eax, dword [esi + 0x18]
or ebx, ecx
mov ecx, dword [esp + 0x18]
push eax
push ecx
push ebx
push 0x2e
call fcn.10003060
add esp, 0x10
cmp dword [ebp + 0x14], 0
mov dword [esp + 0x1c], eax
jne 0x1000263d
mov edx, dword [esi + 0x14]
mov eax, dword [esp + 0x18]
push edx
push eax
and ebx, 3
push ebx
push 0x3d
call fcn.10003060
mov ecx, dword [esp + 0x2c]
add esp, 0x10
mov dword [ecx + 0xc], eax
cmp dword [ebp + 0x14], 0
jne 0x1000263d
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x38]
mov eax, ecx
mov dword [eax + 0x10], esi
mov dword [edx], eax
mov edi, dword [esp + 0x4c]
mov eax, dword [ebp + 0x20]
mov esi, dword [edi + 0x10]
mov dword [esp + 0x1c], esi
cmp eax, 0x7c
je 0x10002585
mov ecx, dword [esp + 0x3c]
cmp eax, ecx
je 0x10002585
cmp eax, 0x65
je 0x10002585
mov eax, dword [esp + 0x48]
mov edx, dword [ebx + 0x18]
push 1
push eax
mov eax, dword [esp + 0x48]
push edx
push eax
push ecx
push ebp
call fcn.10001920
add esp, 0x18
mov dword [esi + 0x10], eax
jmp 0x100025bc
mov ecx, dword [ebp + 0x60]
mov edi, dword [esp + 0x48]
mov eax, dword [ebx + 0x18]
xor edx, edx
push ecx
mov ecx, edi
lea esi, [edx + 0x6e]
call fcn.10005f70
mov edx, dword [ebx + 0x18]
push edi
push edx
push 0
push 0x3d
mov edi, ebp
call fcn.10003060
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x60]
add esp, 0x14
mov dword [ecx + 0x10], eax
mov esi, ecx
cmp dword [ebp + 0x14], 0
jne 0x1000263d
mov al, byte [esi + 1]
test al, 3
je 0x100025ce
movsx ebx, al
jmp 0x100025d5
mov edx, dword [esi + 0x10]
movsx ebx, byte [edx + 1]
mov dl, byte [esi + 1]
mov eax, dword [esi + 0x10]
mov cl, byte [eax + 1]
or cl, dl
mov al, cl
and al, 1
add al, al
and al, cl
add al, al
and cl, 0xfc
or al, cl
or al, dl
and ebx, 3
or al, bl
mov byte [esi + 1], al
mov cl, byte [edi + 1]
movsx edx, cl
test cl, 3
jne 0x10002607
movsx edx, al
or al, cl
mov bl, al
and bl, 1
add bl, bl
and bl, al
add bl, bl
and al, 0xfc
or bl, al
or bl, cl
and edx, 3
or bl, dl
mov byte [edi + 1], bl
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov dword [ebp + 0x20], 0x65
cmp dword [ebp + 0x14], esi
jne 0x1000263d
mov dword [ebp + 0x14], 0xf
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret