Function at 0x45c188
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffb80
xor eax, eax
xor edx, edx
xor ecx, ecx
push ebx
push esi
push edi
mov edi, 3
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], edx
xor eax, eax
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x20], ecx
xor edx, edx
mov dword [ebp - 0x24], eax
xor ecx, ecx
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x2c], ecx
test esi, esi
jne 0x45c1cc
xor eax, eax
jmp 0x45cf30
xor edx, edx
mov dword [esi], edx
cmp dword [ebp + 0x14], 0
jne 0x45c1e3
mov dword [esi], 0x470781
xor eax, eax
jmp 0x45cf30
mov edx, dword [ebp + 0x14]
xor ecx, ecx
mov dword [edx], ecx
test byte [ebp + 0xd], 8
je 0x45c1fd
mov dword [esi], 0x47079a
xor eax, eax
jmp 0x45cf30
test dword [ebp + 0xc], 0xffffc580
je 0x45c213
mov dword [esi], 0x4707d6
xor eax, eax
jmp 0x45cf30
cmp dword [ebp + 0x18], 0
jne 0x45c220
mov dword [ebp + 0x18], 0x46ff7c
mov edx, dword [ebp + 0x18]
mov dword [ebp - 0x98], edx
mov ecx, dword [ebp + 0x18]
add ecx, 0x100
mov dword [ebp - 0x94], ecx
xor ecx, ecx
mov eax, dword [ebp + 0x18]
add eax, 0x200
mov dword [ebp - 0x90], eax
xor eax, eax
mov edx, dword [ebp + 0x18]
add edx, 0x340
mov dword [ebp - 0x8c], edx
mov dword [ebp - 0x78], ecx
mov dword [ebp - 0x74], eax
mov edx, dword [ebp + 8]
dec edx
mov dword [ebp - 0x3c], edx
mov ecx, dword [ebp - 0x2c]
lea eax, [ebp + ecx*4 - 0x3b8]
mov dword [ebp - 0x6c], eax
mov edx, dword [ebp - 0x2c]
lea eax, [ebp + edx - 0x480]
jmp 0x45ccd5
cmp dword [ebp - 0x28], 0
jne case.0x45c2dc.37
test byte [ebp + 0xc], 8
je 0x45c2c0
mov edx, dword [ebp - 0x8c]
test byte [edx + ebx], 1
jne 0x45c266
cmp ebx, 0x23
jne 0x45c2c0
inc dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x3c]
xor ebx, ebx
mov bl, byte [ecx]
test ebx, ebx
je 0x45c2b6
cmp ebx, 0xa
jne 0x45c2a3
test ebx, ebx
je 0x45cce7
jmp 0x45c266
inc dword [ebp - 0x1c]
mov edx, ebx
cmp edx, 0x3f
jg 0x45c30f
je case.0x45c2dc.42
add edx, 0xffffffdc
cmp edx, 0xa
ja case.0x45c2dc.37
jmp dword [edx*4 + 0x45c2e3]
cmp edx, 0x5e
jg 0x45c32b
je case.0x45c2dc.36
sub edx, 0x5b
je 0x45c4fb
dec edx
je 0x45c340
jmp case.0x45c2dc.37
sub edx, 0x7b
je 0x45c450
dec edx
je 0x45c4ee
jmp case.0x45c2dc.37
mov eax, dword [ebp - 0x3c]
lea edx, [ebp - 0x3c]
mov dword [ebp - 0x50], eax
push 0
mov ecx, dword [ebp + 0xc]
push ecx
mov eax, dword [ebp - 0x10]
push eax
push esi
push edx
call fcn.004599a8
add esp, 0x14
mov ebx, eax
cmp dword [esi], 0
jne 0x45ce38
test ebx, ebx
jl 0x45c37c
mov eax, dword [ebp - 0x50]
mov ebx, 0x5c
mov dword [ebp - 0x3c], eax
jmp case.0x45c2dc.37
mov eax, ebx
neg eax
cmp eax, 0x10
jne 0x45c391
mov dword [ebp - 0x28], 1
jmp 0x45c266
inc edi
cmp ebx, 0xffffffef
jg 0x45c266
mov eax, ebx
neg eax
add eax, 0xffffffef
cmp eax, 0x20
jge 0x45c3b2
mov ecx, eax
mov edx, 1
shl edx, cl
jmp 0x45c3b7
mov edx, 1
or dword [ebp - 0x74], edx
cmp eax, dword [ebp - 0x78]
jle 0x45c3c2
mov dword [ebp - 0x78], eax
add edi, 2
mov eax, dword [ebp - 0x3c]
cmp byte [eax + 1], 0x7b
jne 0x45c266
mov ecx, dword [ebp - 0x3c]
add ecx, 2
push ecx
call fcn.00459b64
pop ecx
test eax, eax
je 0x45c266
push esi
lea eax, [ebp - 0x44]
push eax
lea edx, [ebp - 0x40]
push edx
mov ecx, dword [ebp - 0x3c]
add ecx, 2
push ecx
call fcn.00459bdc
add esp, 0x10
mov dword [ebp - 0x3c], eax
cmp dword [esi], 0
jne 0x45ce38
cmp dword [ebp - 0x40], 0
jne 0x45c41d
cmp dword [ebp - 0x44], 1
je 0x45c429
cmp dword [ebp - 0x44], 0xffffffff
je 0x45c429
cmp dword [ebp - 0x40], 1
jne 0x45c42c
cmp dword [ebp - 0x44], 0xffffffff
jne 0x45c42c
inc edi
jmp 0x45c42f
add edi, 5
mov eax, dword [ebp - 0x3c]
cmp byte [eax + 1], 0x3f
jne 0x45c266
inc dword [ebp - 0x3c]
jmp 0x45c266
inc edi
jmp 0x45c266
inc edi
jmp 0x45c4d6
mov edx, dword [ebp - 0x3c]
inc edx
push edx
call fcn.00459b64
pop ecx
test eax, eax
je case.0x45c2dc.37
push esi
lea ecx, [ebp - 0x44]
push ecx
lea eax, [ebp - 0x40]
push eax
mov edx, dword [ebp - 0x3c]
inc edx
push edx
call fcn.00459bdc
add esp, 0x10
mov dword [ebp - 0x3c], eax
cmp dword [esi], 0
jne 0x45ce38
cmp dword [ebp - 0x40], 0
jne 0x45c497
cmp dword [ebp - 0x44], 1
je 0x45c4a3
cmp dword [ebp - 0x44], 0xffffffff
je 0x45c4a3
cmp dword [ebp - 0x40], 1
jne 0x45c4a6
cmp dword [ebp - 0x44], 0xffffffff
jne 0x45c4a6
inc edi
jmp 0x45c4ca
cmp dword [ebp - 0x40], 1
je 0x45c4b6
dec edi
cmp dword [ebp - 0x40], 0
jle 0x45c4b6
add edi, 4
cmp dword [ebp - 0x44], 0
jle 0x45c4c3
mov ecx, 4
jmp 0x45c4c8
mov ecx, 2
add edi, ecx
mov eax, dword [ebp - 0x3c]
cmp byte [eax + 1], 0x3f
jne 0x45c4d6
inc dword [ebp - 0x3c]
mov edx, dword [ebp - 0x3c]
cmp byte [edx + 1], 0x2b
jne 0x45c266
inc dword [ebp - 0x3c]
add edi, 6
jmp 0x45c266
mov eax, dword [ebp - 0x14]
add eax, 3
add edi, eax
jmp 0x45c266
xor ebx, ebx
inc dword [ebp - 0x3c]
mov eax, dword [ebp - 0x3c]
cmp byte [eax], 0x5e
jne 0x45c50b
inc dword [ebp - 0x3c]
mov edx, dword [ebp - 0x3c]
cmp byte [edx], 0
je 0x45c5e8
cmp dword [ebp - 0x28], 0
je 0x45c543
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx], 0x5c
jne 0x45c5c6
mov eax, dword [ebp - 0x3c]
cmp byte [eax + 1], 0x45
jne 0x45c5c6
xor edx, edx
mov dword [ebp - 0x28], edx
inc dword [ebp - 0x3c]
jmp 0x45c5c7
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx], 0x5c
jne 0x45c599
push 1
lea ecx, [ebp - 0x3c]
mov eax, dword [ebp + 0xc]
push eax
mov edx, dword [ebp - 0x10]
push edx
push esi
push ecx
call fcn.004599a8
add esp, 0x14
cmp dword [esi], 0
jne 0x45ce38
mov edx, eax
neg edx
cmp edx, 4
jne 0x45c579
mov eax, 8
mov ecx, eax
neg ecx
cmp ecx, 0x10
jne 0x45c58b
mov dword [ebp - 0x28], 1
jmp 0x45c5c7
test eax, eax
jl 0x45c592
inc ebx
jmp 0x45c5c7
mov ebx, 0xa
jmp 0x45c5c7
mov eax, dword [ebp - 0x3c]
cmp byte [eax], 0x5b
jne 0x45c5c6
lea edx, [ebp - 0x98]
lea ecx, [ebp - 0x3c]
push edx
push ecx
mov eax, dword [ebp - 0x3c]
push eax
call fcn.0045a13c
add esp, 0xc
test eax, eax
je 0x45c5c6
inc dword [ebp - 0x3c]
mov ebx, 0xa
jmp 0x45c5c7
inc ebx
inc dword [ebp - 0x3c]
mov eax, dword [ebp - 0x3c]
cmp byte [eax], 0
je 0x45c5e8
cmp dword [ebp - 0x28], 0
jne 0x45c517
mov edx, dword [ebp - 0x3c]
cmp byte [edx], 0x5d
jne 0x45c517
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx], 0
jne 0x45c5fb
mov dword [esi], 0x4707f0
jmp 0x45ce38
dec ebx
jne 0x45c606
add edi, 3
jmp 0x45c266
add edi, 0x21
mov eax, dword [ebp - 0x3c]
cmp byte [eax], 0
je 0x45c266
mov edx, dword [ebp - 0x3c]
cmp byte [edx + 1], 0x7b
jne 0x45c266
mov ecx, dword [ebp - 0x3c]
add ecx, 2
push ecx
call fcn.00459b64
pop ecx
test eax, eax
je 0x45c266
push esi
lea eax, [ebp - 0x44]
push eax
lea edx, [ebp - 0x40]
push edx
mov ecx, dword [ebp - 0x3c]
add ecx, 2
push ecx
call fcn.00459bdc
add esp, 0x10
mov dword [ebp - 0x3c], eax
cmp dword [esi], 0
jne 0x45ce38
cmp dword [ebp - 0x40], 0
jne 0x45c66d
cmp dword [ebp - 0x44], 1
je 0x45c679
cmp dword [ebp - 0x44], 0xffffffff
je 0x45c679
cmp dword [ebp - 0x40], 1
jne 0x45c67c
cmp dword [ebp - 0x44], 0xffffffff
jne 0x45c67c
inc edi
jmp 0x45c67f
add edi, 5
mov eax, dword [ebp - 0x3c]
cmp byte [eax + 1], 0x2b
jne 0x45c693
inc dword [ebp - 0x3c]
add edi, 6
jmp 0x45c266
mov edx, dword [ebp - 0x3c]
cmp byte [edx + 1], 0x3f
jne 0x45c266
inc dword [ebp - 0x3c]
jmp 0x45c266
xor ecx, ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x48], 3
mov edx, dword [ebp - 0x3c]
cmp byte [edx + 1], 0x3f
jne 0x45caad
mov ecx, dword [ebp - 0x3c]
xor ebx, ebx
mov bl, byte [ecx + 2]
mov edx, ebx
add edx, 0xffffffdf
cmp edx, 0x31
ja case.0x45c6dd.33
mov dl, byte [edx + 0x45c6e4]
jmp dword [edx*4 + 0x45c716]
add dword [ebp - 0x3c], 3
jmp 0x45c743
inc dword [ebp - 0x3c]
mov eax, dword [ebp - 0x3c]
cmp byte [eax], 0
je 0x45c753
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx], 0x29
jne 0x45c740
mov eax, dword [ebp - 0x3c]
cmp byte [eax], 0
jne 0x45c266
mov dword [esi], 0x47081a
jmp 0x45ce38
add dword [ebp - 0x3c], 2
jmp 0x45cac3
inc dword [ebp - 0x3c]
add dword [ebp - 0x3c], 2
cmp ebx, 0x52
je 0x45c792
inc dword [ebp - 0x3c]
mov edx, dword [ebp - 0x3c]
xor ecx, ecx
mov cl, byte [edx]
test byte [ecx + 0x46fe68], 4
jne 0x45c77f
mov eax, dword [ebp - 0x3c]
cmp byte [eax], 0x29
je 0x45c7a5
mov dword [esi], 0x470832
jmp 0x45ce38
add edi, 3
mov edx, dword [ebp - 0x3c]
cmp byte [edx + 1], 0x2b
je 0x45c7d0
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx + 1], 0x2a
je 0x45c7d0
mov eax, dword [ebp - 0x3c]
cmp byte [eax + 1], 0x3f
je 0x45c7d0
mov edx, dword [ebp - 0x3c]
cmp byte [edx + 1], 0x7b
jne 0x45c266
mov dword [ebp - 0x4c], 0xb
add edi, 6
jmp 0x45cb1a
add dword [ebp - 0x3c], 2
inc dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x3c]
xor eax, eax
mov al, byte [ecx]
test byte [eax + 0x46fe68], 4
jne 0x45c7e3
mov edx, dword [ebp - 0x3c]
cmp byte [edx], 0x29
je 0x45c809
mov dword [esi], 0x470858
jmp 0x45ce38
add edi, 2
jmp 0x45c266
add dword [ebp - 0x3c], 3
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx], 0x3c
jne 0x45c871
inc dword [ebp - 0x3c]
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x60], edx
jmp 0x45c82b
inc dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x3c]
xor edx, edx
mov dl, byte [ecx]
mov ecx, dword [ebp - 0x8c]
test byte [ecx + edx], 0x10
jne 0x45c828
mov edx, dword [ebp - 0x3c]
cmp byte [edx], 0x3e
je 0x45c851
mov dword [esi], 0x470873
jmp 0x45ce38
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x3c]
sub ecx, dword [ebp - 0x60]
cmp ecx, dword [ebp - 0x24]
jle 0x45cac3
mov edx, dword [ebp - 0x3c]
sub edx, dword [ebp - 0x60]
mov dword [ebp - 0x24], edx
jmp 0x45cac3
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx], 0x3d
je 0x45c881
mov edx, dword [ebp - 0x3c]
cmp byte [edx], 0x3e
jne 0x45c8ae
inc dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x3c]
xor edx, edx
mov dl, byte [ecx]
mov ecx, dword [ebp - 0x8c]
test byte [ecx + edx], 0x10
jne 0x45c881
mov edx, dword [ebp - 0x3c]
cmp byte [edx], 0x29
je 0x45cac3
mov dword [esi], 0x47088a
jmp 0x45ce38
mov dword [esi], 0x4708a1
jmp 0x45ce38
add dword [ebp - 0x3c], 3
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx], 0x3d
je 0x45c8cd
mov edx, dword [ebp - 0x3c]
cmp byte [edx], 0x21
jne 0x45c8dc
mov dword [ebp - 0x18], 3
add edi, 3
jmp 0x45cac3
mov dword [esi], 0x4708c2
jmp 0x45ce38
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx + 3], 0x52
jne 0x45c905
mov edx, dword [ebp - 0x3c]
cmp byte [edx + 4], 0x29
jne 0x45c905
add dword [ebp - 0x3c], 4
add edi, 3
jmp 0x45cac3
mov ecx, dword [ebp - 0x3c]
xor edx, edx
mov dl, byte [ecx + 3]
test byte [edx + 0x46fe68], 4
je 0x45c949
add dword [ebp - 0x3c], 4
add edi, 3
jmp 0x45c922
inc dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x3c]
xor edx, edx
mov dl, byte [ecx]
test byte [edx + 0x46fe68], 4
jne 0x45c91f
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx], 0x29
je 0x45cac3
mov dword [esi], 0x4708e3
jmp 0x45ce38
inc dword [ebp - 0x3c]
mov edx, dword [ebp - 0x3c]
cmp byte [edx + 2], 0x3f
jne 0x45c97c
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx + 3], 0x3d
je 0x45cac3
mov edx, dword [ebp - 0x3c]
cmp byte [edx + 3], 0x21
je 0x45cac3
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx + 3], 0x3c
je 0x45cac3
add dword [ebp - 0x3c], 2
mov dword [esi], 0x4708fe
jmp 0x45ce38
xor edx, edx
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x5c], ecx
add dword [ebp - 0x3c], 2
mov edx, dword [ebp - 0x3c]
xor ebx, ebx
mov bl, byte [edx]
mov edx, ebx
cmp edx, 0x58
jg 0x45c9ca
je 0x45ca09
sub edx, 0x29
je 0x45ca24
sub edx, 4
je 0x45ca1c
sub edx, 0xd
je 0x45ca45
sub edx, 0x1b
je 0x45ca11
jmp 0x45ca6e
sub edx, 0x69
je 0x45c9e3
sub edx, 4
je 0x45c9ee
sub edx, 6
je 0x45c9f9
sub edx, 5
je 0x45ca01
jmp 0x45ca6e
mov ecx, dword [ebp - 0x5c]
or dword [ecx], 1
jmp 0x45ca79
mov edx, dword [ebp - 0x5c]
or dword [edx], 2
jmp 0x45ca79
mov ecx, dword [ebp - 0x5c]
or dword [ecx], 4
jmp 0x45ca79
mov edx, dword [ebp - 0x5c]
or dword [edx], 8
jmp 0x45ca79
mov ecx, dword [ebp - 0x5c]
or dword [ecx], 0x40
jmp 0x45ca79
mov edx, dword [ebp - 0x5c]
or dword [edx], 0x200
jmp 0x45ca79
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x5c], ecx
jmp 0x45ca79
cmp dword [ebp - 0x1c], 0
jne 0x45ca45
mov edx, dword [ebp + 0xc]
or edx, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x58]
not ecx
and edx, ecx
mov dword [ebp + 0xc], edx
xor edx, edx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x54], edx
dec dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x54]
or ecx, dword [ebp - 0x58]
test cl, 7
je 0x45ca81
mov dword [ebp - 0x18], 2
mov edx, dword [ebp - 0x54]
add edi, 4
or edx, dword [ebp - 0x58]
test dl, 1
je 0x45ca81
or dword [ebp + 0xc], 0x8000000
jmp 0x45ca81
mov dword [esi], 0x47091b
jmp 0x45ce38
inc dword [ebp - 0x3c]
jmp 0x45c99d
cmp ebx, 0x29
jne 0x45cac3
cmp dword [ebp - 0x18], 2
jne 0x45c266
cmp dword [ebp - 0x14], 0
je 0x45caa0
cmp dword [ebp - 0x14], 3
jne 0x45c266
mov eax, dword [ebp - 0x18]
add dword [ebp - 0x14], eax
jmp 0x45c266
test byte [ebp + 0xd], 0x10
jne 0x45cac3
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0x96
jle 0x45cac3
add dword [ebp - 0x48], 3
cmp dword [ebp - 0x2c], 0xc8
jb 0x45cad7
mov dword [esi], 0x47093b
jmp 0x45ce38
mov cl, byte [ebp - 0x14]
mov byte [eax], cl
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 0x6c]
mov dword [edx], edi
inc dword [ebp - 0x2c]
add edi, dword [ebp - 0x48]
jmp 0x45c266
add edi, 3
cmp dword [ebp - 0x2c], 0
jbe 0x45cb15
dec dword [ebp - 0x2c]
add dword [ebp - 0x6c], 0xfffffffc
dec eax
mov ecx, dword [ebp - 0x6c]
mov edx, edi
sub edx, dword [ecx]
mov dword [ebp - 0x4c], edx
movzx eax, byte [eax]
mov dword [ebp - 0x14], eax
jmp 0x45cb1a
xor ecx, ecx
mov dword [ebp - 0x4c], ecx
mov eax, dword [ebp - 0x3c]
xor ebx, ebx
mov bl, byte [eax + 1]
cmp ebx, 0x7b
jne 0x45cb5e
mov eax, dword [ebp - 0x3c]
add eax, 2
push eax
call fcn.00459b64
pop ecx
test eax, eax
je 0x45cb5e
push esi
lea edx, [ebp - 0x44]
push edx
lea ecx, [ebp - 0x40]
push ecx
mov eax, dword [ebp - 0x3c]
add eax, 2
push eax
call fcn.00459bdc
add esp, 0x10
mov dword [ebp - 0x3c], eax
cmp dword [esi], 0
jne 0x45ce38
jmp 0x45cbb0
cmp ebx, 0x2a
jne 0x45cb74
xor edx, edx
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x44], 0xffffffff
inc dword [ebp - 0x3c]
jmp 0x45cbb0
cmp ebx, 0x2b
jne 0x45cb8c
mov dword [ebp - 0x40], 1
mov dword [ebp - 0x44], 0xffffffff
inc dword [ebp - 0x3c]
jmp 0x45cbb0
cmp ebx, 0x3f
jne 0x45cba2
xor ecx, ecx
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x44], 1
inc dword [ebp - 0x3c]
jmp 0x45cbb0
mov dword [ebp - 0x40], 1
mov dword [ebp - 0x44], 1
cmp dword [ebp - 0x40], 0
jne 0x45cbcd
inc edi
cmp dword [ebp - 0x44], 0
jle 0x45cbf3
mov eax, dword [ebp - 0x44]
mov edx, dword [ebp - 0x4c]
add edx, 7
dec eax
imul edx
add edi, eax
jmp 0x45cbf3
mov ecx, dword [ebp - 0x40]
dec ecx
imul ecx, dword [ebp - 0x4c]
add edi, ecx
mov eax, dword [ebp - 0x44]
cmp eax, dword [ebp - 0x40]
jle 0x45cbf3
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x4c]
sub edx, dword [ebp - 0x40]
add ecx, 7
imul edx, ecx
add edx, 0xfffffffa
add edi, edx
mov eax, dword [ebp - 0x3c]
cmp byte [eax + 1], 0x2b
jne 0x45c266
inc dword [ebp - 0x3c]
add edi, 6
jmp 0x45c266
add edi, 2
xor edx, edx
mov dword [ebp - 4], edx
cmp dword [ebp - 0x28], 0
je 0x45cc36
cmp ebx, 0x5c
jne 0x45cc31
mov ecx, dword [ebp - 0x3c]
cmp byte [ecx + 1], 0x45
jne 0x45cc31
xor eax, eax
mov dword [ebp - 0x28], eax
inc dword [ebp - 0x3c]
jmp 0x45cc9e
inc dword [ebp - 4]
jmp 0x45cc9e
test byte [ebp + 0xc], 8
je 0x45cc62
mov edx, dword [ebp - 0x8c]
test byte [edx + ebx], 1
jne 0x45cc9e
cmp ebx, 0x23
jne 0x45cc62
inc dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x3c]
xor ebx, ebx
mov bl, byte [ecx]
test ebx, ebx
je 0x45cc9e
cmp ebx, 0xa
jne 0x45cc4d
jmp 0x45cc9e
cmp ebx, 0x5c
jne 0x45cc9b
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x64], eax
push 0
mov edx, dword [ebp + 0xc]
lea eax, [ebp - 0x3c]
push edx
mov ecx, dword [ebp - 0x10]
push ecx
push esi
push eax
call fcn.004599a8
add esp, 0x14
mov ebx, eax
cmp dword [esi], 0
jne 0x45ce38
test ebx, ebx
jge 0x45cc9b
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x3c], eax
jmp 0x45ccc1
inc dword [ebp - 4]
cmp dword [ebp - 4], 0xfa
jge 0x45ccc1
inc dword [ebp - 0x3c]
mov edx, dword [ebp - 0x3c]
xor ebx, ebx
mov bl, byte [edx]
mov eax, dword [ebp - 0x8c]
test byte [eax + ebx], 0x80
je 0x45cc13
cmp dword [ebp - 4], 0xfa
jge 0x45cccd
dec dword [ebp - 0x3c]
add edi, dword [ebp - 4]
jmp 0x45c266
inc dword [ebp - 0x3c]
mov edx, dword [ebp - 0x3c]
xor ebx, ebx
mov bl, byte [edx]
test ebx, ebx
jne 0x45c282
add edi, 4
cmp edi, 0x10000
jle 0x45ccff
mov dword [esi], 0x470959
xor eax, eax
jmp 0x45cf30
mov edx, dword [ebp - 0x24]
add edx, 3
imul edx, dword [ebp - 0x20]
add edx, edi
add edx, 0x1c
mov dword [ebp - 0x30], edx
mov ecx, dword [ebp - 0x30]
push ecx
call dword [0x46ff68]
pop ecx
mov ebx, eax
test ebx, ebx
jne 0x45cd2f
mov dword [esi], 0x470976
xor eax, eax
jmp 0x45cf30
mov dword [ebx], 0x50435245
mov edx, dword [ebp - 0x30]
mov dword [ebx + 4], edx
mov ecx, dword [ebp + 0xc]
mov dword [ebx + 0xc], ecx
mov eax, dword [ebp + 0x18]
mov dword [ebx + 8], eax
mov dx, word [ebp - 0x24]
add dx, 3
mov word [ebx + 0x18], dx
xor edx, edx
mov ax, word [ebp - 0x20]
mov word [ebx + 0x1a], ax
mov dword [ebp - 0x80], edx
mov ecx, dword [ebp - 0x24]
lea edx, [ebx + 0x1c]
add ecx, 3
movzx eax, ax
mov dword [ebp - 0x7c], ecx
mov dword [ebp - 0x84], edx
movzx ecx, word [ebx + 0x18]
imul ecx, eax
add ecx, dword [ebp - 0x84]
xor edx, edx
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x70], edx
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x3c], ecx
xor ecx, ecx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x98]
mov edx, dword [ebp - 0x34]
mov byte [edx], 0x4c
mov dword [ebp - 0x10], ecx
push eax
lea edx, [ebp - 0xc]
push 0
push edx
lea ecx, [ebp - 8]
lea eax, [ebp - 0x3c]
push ecx
push 0
push 0
push esi
push eax
lea edx, [ebp - 0x34]
push edx
lea ecx, [ebp - 0x10]
push ecx
mov eax, dword [ebp + 0xc]
and eax, 7
push eax
mov edx, dword [ebp + 0xc]
push edx
call fcn.0045bc5c
mov cx, word [ebp - 0x10]
add esp, 0x30
mov word [ebx + 0x10], cx
mov ax, word [ebp - 0x78]
mov word [ebx + 0x12], ax
cmp dword [esi], 0
jne 0x45ce02
mov edx, dword [ebp - 0x3c]
cmp byte [edx], 0
je 0x45ce02
mov dword [esi], 0x47098b
mov ecx, dword [ebp - 0x34]
mov byte [ecx], 0
inc dword [ebp - 0x34]
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x38]
cmp edi, eax
jge 0x45ce1b
mov dword [esi], 0x4709a1
mov dx, word [ebx + 0x12]
cmp dx, word [ebx + 0x10]
jbe 0x45ce2b
mov dword [esi], 0x4709bf
cmp dword [esi], 0
je 0x45ce4a
push ebx
call dword [0x46ff6c]
pop ecx
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp + 0x14]
sub ecx, dword [ebp + 8]
mov dword [eax], ecx
xor eax, eax
jmp 0x45cf30
test byte [ebp + 0xc], 0x10
jne 0x45cee6
mov edx, dword [ebp + 0xc]
lea eax, [ebp - 0x68]
mov dword [ebp - 0x68], edx
mov ecx, dword [ebp - 0x74]
push ecx
push 0
push eax
mov edx, dword [ebp - 0x38]
push edx
call fcn.0045beac
add esp, 0x10
test eax, eax
je 0x45ce7a
or dword [ebx + 0xc], 0x10
jmp 0x45cee6
cmp dword [ebp - 8], 0
jge 0x45ce95
push 0
lea ecx, [ebp - 0x68]
push ecx
mov eax, dword [ebp - 0x38]
push eax
call fcn.0045c088
add esp, 0xc
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jl 0x45cec9
mov eax, dword [ebp - 8]
and eax, 0xff
test byte [ebp - 7], 1
je 0x45ceb8
mov edx, dword [ebp - 0x94]
xor ecx, ecx
mov cl, byte [edx + eax]
cmp eax, ecx
je 0x45cebc
mov ax, word [ebp - 8]
mov word [ebx + 0x14], ax
or dword [ebx + 0xc], 0x40000000
jmp 0x45cee6
mov edx, dword [ebp - 0x74]
push edx
push 0
mov ecx, dword [ebp - 0x38]
push ecx
call fcn.0045bfa8
add esp, 0xc
test eax, eax
je 0x45cee6
or dword [ebx + 0xc], 0x10000000
cmp dword [ebp - 0xc], 0
jl 0x45cf2e
test byte [ebx + 0xc], 0x10
je 0x45cef8
test byte [ebp - 0xb], 2
je 0x45cf2e
mov eax, dword [ebp - 0xc]
and eax, 0xff
test byte [ebp - 0xb], 1
je 0x45cf1f
mov edx, dword [ebp - 0x94]
xor ecx, ecx
mov cl, byte [edx + eax]
cmp eax, ecx
jne 0x45cf1f
mov ax, word [ebp - 0xc]
and ax, 0xfeff
jmp 0x45cf23
mov ax, word [ebp - 0xc]
mov word [ebx + 0x16], ax
or dword [ebx + 0xc], 0x20000000
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret