Function at 0x416eb0
Capabilities:
Parse credit card information

Disassembly:
push ebp
lea ebp, [esp - 0x6c]
sub esp, 0x110
mov eax, dword [ebp + 0x78]
and eax, 0x10000
mov dword [ebp - 0x44], eax
mov eax, dword [ebp + 0x78]
and eax, 0x20000
push ebx
push esi
mov dword [ebp + 0x18], ecx
xor ecx, ecx
mov dword [ebp - 0x54], eax
movzx eax, byte [ebp + 0x78]
push edi
xor edi, edi
cmp eax, edi
sete cl
xor ebx, ebx
cmp eax, 1
sete bl
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], ecx
xor ecx, ecx
cmp eax, 2
sete cl
cmp dword [ebp - 0x14], edi
mov dword [ebp + 0x14], ebx
mov dword [ebp + 0xc], ecx
jne 0x416f0d
cmp ebx, edi
mov byte [ebp + 0x43], 0
je 0x416f11
mov byte [ebp + 0x43], 1
mov eax, dword [ebp + 0x74]
add eax, 0xfffffffe
mov dword [ebp - 0x30], eax
mov dword [ebp + 0x20], eax
push 1
lea eax, [ebp + 0x74]
push eax
push 0x497810
mov dword [ebp + 0x2c], edi
call fcn.00437ad0
add esp, 0xc
cmp dword [ebp - 0x14], edi
push 0x24
pop edx
movzx eax, al
push 0x7c
mov dword [ebp - 0x40], eax
mov dword [ebp + 8], 0x100001
mov dword [ebp + 0x10], 0x100002
mov dword [ebp + 0x24], 0x100003
pop esi
jne 0x416f6d
cmp ebx, edi
je 0x416f65
mov dword [ebp + 8], esi
mov dword [ebp + 0x24], edx
jmp 0x416f73
cmp dword [ebp + 0xc], edi
je 0x416f7a
mov dword [ebp - 8], esi
mov dword [ebp + 8], edx
mov dword [ebp + 0x24], esi
mov dword [ebp + 0x10], 0x23
mov eax, dword [ebp + 0x74]
mov cx, word [eax]
cmp cx, dx
mov byte [ebp + 0x42], 0
je 0x416f94
cmp cx, 0x23
je 0x416f94
cmp cx, si
jne 0x416fa2
movzx ecx, cx
inc eax
inc eax
mov dword [ebp - 8], ecx
mov byte [ebp + 0x42], cl
mov dword [ebp + 0x74], eax
cmp word [eax], 0x5b
mov esi, eax
sete byte [ebp + 0x53]
cmp byte [ebp + 0x53], 0
mov dword [ebp + 0x48], esi
je 0x417012
push eax
call dword [fcn.004944c4]
lea ecx, [esi + eax*2 - 2]
jmp 0x416fc7
mov word [ecx], di
dec ecx
dec ecx
mov ax, word [ecx]
call fcn.0040bc38
test al, al
jne 0x416fc2
cmp word [ecx], 0x5d
jne 0x416fdc
mov word [ecx], di
push 2
pop edx
add esi, edx
xor ecx, ecx
jmp 0x417007
mov eax, ecx
call fcn.0040bc38
test al, al
jne 0x417005
cmp cx, 0x5b
je 0x416ffc
cmp cx, 0x28
jne 0x417012
mov eax, dword [ebp + 0x20]
add dword [ebp + 0x20], edx
mov word [eax], cx
add esi, edx
mov cx, word [esi]
cmp cx, di
mov dword [ebp + 0x48], esi
jne 0x416fe5
push 1
lea eax, [ebp + 0x74]
push eax
push 0x497810
mov dword [ebp + 0x74], esi
call fcn.00437ad0
mov edx, dword [ebp + 0x74]
movzx eax, al
add esp, 0xc
cmp byte [ebp + 0x53], 0
mov esi, edx
mov dword [ebp - 0x34], eax
mov dword [ebp + 0x54], edi
mov dword [ebp + 0x58], edi
mov dword [ebp + 0x60], edi
mov dword [ebp + 0x64], edi
mov dword [ebp + 0x38], esi
mov dword [ebp + 0x28], edi
mov dword [ebp + 0x44], edi
mov dword [ebp + 0x34], edi
mov dword [ebp + 0x1c], edi
mov byte [ebp + 0x7b], 0
je 0x417219
mov eax, dword [ebp + 0x14]
mov dword [ebp + 0x30], eax
xor eax, eax
mov ax, word [edx]
xor bl, bl
cmp ax, 0x22
mov dword [ebp + 0x48], edx
mov dword [ebp + 0x3c], edx
mov byte [ebp + 0x6b], 0
je 0x417099
cmp ax, 0x27
je 0x417099
cmp ax, di
je 0x4170d0
push eax
call fcn.004103b8
add esp, 4
test al, al
jne 0x417094
mov dword [ebp + 0x30], edi
lea eax, [edx + 2]
jmp 0x4170cd
xor eax, eax
mov ax, word [edx + 2]
push eax
call fcn.004103b8
add esp, 4
test al, al
jne 0x4170af
mov dword [ebp + 0x30], edi
push 0xc1
lea eax, [ebp + 0x3c]
push edi
push eax
call fcn.00416853
mov edx, dword [ebp + 0x74]
add esp, 0xc
mov byte [ebp + 0x6b], 1
mov bl, 1
mov dword [ebp + 0x48], eax
mov dword [ebp + 0x38], eax
lea ecx, [ebp + 0x38]
call fcn.0040bc51
mov esi, dword [ebp + 0x38]
xor ecx, ecx
jmp 0x417171
mov eax, ecx
call fcn.0040bc38
test al, al
je 0x417107
cmp bl, 1
jg 0x41717d
lea ecx, [ebp + 0x38]
inc bl
call fcn.0040bc51
mov esi, dword [ebp + 0x38]
dec esi
dec esi
jmp 0x41716c
cmp cx, 0x3e
je 0x4171d3
cmp cx, 0x3c
je 0x4171d3
cmp cx, 0x3d
je 0x4171d3
cmp cx, 0x21
je 0x4171d3
cmp dword [ebp + 0x30], edi
je 0x417168
cmp dword [ebp + 0x14], 0
je 0x417166
cmp cx, 0x26
je 0x41714c
cmp cx, 0x7c
je 0x41714c
cmp cx, 0x40
jne 0x417166
mov ax, word [esi + 2]
call fcn.0040bc38
test al, al
je 0x417166
mov ax, word [esi - 2]
call fcn.0040bc38
test al, al
jne 0x4171b5
xor edi, edi
test bl, bl
jg 0x41717d
inc esi
inc esi
mov dword [ebp + 0x38], esi
mov cx, word [esi]
cmp cx, di
jne 0x4170e2
cmp byte [ebp + 0x6b], 0
jne 0x417208
push 0xc1
lea eax, [ebp + 0x3c]
push edi
push eax
call fcn.00416853
add esp, 0xc
cmp byte [ebp + 0x7b], 0
mov dword [ebp + 0x48], eax
je 0x417205
sub eax, esi
sar eax, 1
push eax
push esi
lea ecx, [ebp + 0x1c]
call fcn.00435e88
jmp 0x417251
lea eax, [esi + 2]
mov cx, word [eax]
xor edi, edi
cmp cx, word [esi]
jne 0x4171cd
mov word [esi], di
mov esi, eax
mov byte [ebp + 0x7b], 5
jmp 0x4171d7
mov byte [ebp + 0x7b], 3
jmp 0x4171d7
mov byte [ebp + 0x7b], 1
cmp byte [ebp + 0x7b], 1
lea ecx, [esi + 2]
mov dword [ebp + 0x3c], ecx
jne 0x417187
mov ax, word [ecx]
cmp ax, 0x3e
je 0x4171fe
cmp ax, 0x3c
je 0x4171fe
cmp ax, 0x3d
je 0x4171fe
cmp ax, 0x21
jne 0x417187
inc ecx
inc ecx
mov dword [ebp + 0x3c], ecx
jmp 0x417187
mov edx, dword [ebp + 0x74]
mov eax, dword [ebp + 0x48]
cmp word [eax], di
je 0x41725d
add dword [ebp + 0x48], 2
mov word [eax], di
jmp 0x41725a
xor eax, eax
mov ax, word [edx]
jmp 0x41723d
cmp ax, 0x3e
je 0x417244
cmp ax, 0x3c
je 0x417244
cmp ax, 0x3d
je 0x417244
cmp ax, 0x21
je 0x417244
inc esi
inc esi
mov ax, word [esi]
cmp ax, di
jne 0x417220
jmp 0x41725d
push esi
lea ecx, [ebp + 0x1c]
mov byte [ebp + 0x7b], 1
call fcn.00440487
mov eax, dword [ebp + 0x1c]
mov word [esi], di
mov dword [ebp + 0x28], eax
mov edx, dword [ebp + 0x74]
mov ebx, dword [ebp + 0x18]
cmp byte [ebx + 0x92], 0
jne 0x4172f8
cmp byte [ebx + 9], 0
jne 0x4172f8
push 1
push edi
lea eax, [ebp + 0x44]
push eax
push edx
mov ecx, ebx
call fcn.0043e7f3
mov eax, dword [ebp + 0x44]
push edi
push edi
lea ecx, [ebp + 0x44]
push ecx
push eax
mov ecx, ebx
mov dword [ebp - 0x38], eax
mov dword [ebp + 0x44], edi
call fcn.0043d5b3
mov esi, dword [ebp + 0x28]
cmp esi, edi
je 0x4172ee
push 1
push edi
lea eax, [ebp + 0x34]
push eax
push esi
mov ecx, ebx
call fcn.0043e7f3
mov eax, dword [ebp + 0x34]
push edi
push edi
lea ecx, [ebp + 0x34]
push ecx
push eax
mov ecx, ebx
mov dword [ebp - 0x3c], eax
mov dword [ebp + 0x34], edi
call fcn.0043d5b3
push dword [ebp + 0x44]
call dword [fcn.004944c4]
push dword [ebp + 0x34]
lea ecx, [ebp + 0x44]
mov esi, eax
call fcn.00435dd0
mov eax, dword [ebp + 0x44]
lea ecx, [ebp - 0x3c]
lea esi, [eax + esi*2]
call fcn.0043092f
lea ecx, [ebp - 0x38]
call fcn.0043092f
jmp 0x417339
push 1
push edi
lea eax, [ebp + 0x44]
push eax
push edx
mov ecx, ebx
call fcn.0043e7f3
mov esi, dword [ebp + 0x28]
cmp esi, edi
je 0x417339
push 1
push edi
lea eax, [ebp + 0x34]
push eax
push esi
mov ecx, ebx
call fcn.0043e7f3
push dword [ebp + 0x44]
call dword [fcn.004944c4]
push dword [ebp + 0x34]
lea ecx, [ebp + 0x44]
mov esi, eax
call fcn.00435dd0
mov eax, dword [ebp + 0x44]
lea esi, [eax + esi*2]
mov eax, dword [ebp + 0x44]
push eax
mov dword [ebp + 0x74], eax
call fcn.0040cd10
mov ebx, dword [fcn.004944c4]
pop ecx
push dword [ebp + 0x74]
call ebx
cmp esi, edi
mov edx, dword [ebp + 0x74]
lea eax, [edx + eax*2]
mov dword [ebp - 0xc], eax
mov dword [ebp], edx
mov dword [ebp + 0x38], esi
jne 0x417370
push edx
call ebx
mov edx, dword [ebp + 0x74]
lea esi, [edx + eax*2]
mov dword [ebp + 0x38], esi
cmp esi, edi
mov eax, dword [ebp - 8]
mov ecx, edx
mov dword [ebp + 0x3c], eax
mov dword [ebp + 0x30], edi
je 0x417396
mov ax, word [edx]
jmp 0x41738d
cmp ecx, esi
jae 0x417396
inc ecx
inc ecx
mov ax, word [ecx]
call fcn.0040bc38
test al, al
je 0x417384
mov bl, byte [ebp + 0x7b]
sub ecx, edx
sar ecx, 1
test bl, bl
mov dword [ebp + 0x28], ecx
jne 0x4173bd
cmp dword [ebp + 0xc], edi
jne 0x4173bd
cmp word [edx], 0x3a
je 0x4173bd
cmp dword [ebp + 0x14], edi
je 0x41781b
jmp 0x417b19
mov dword [ebp + 0x4c], esi
cmp word [edx], 0x3a
jne 0x4173ce
test bl, bl
jne 0x4173ce
or dword [ebp + 0x3c], 0xffffffff
cmp bl, 1
jne 0x4173ee
lea eax, [esi + 2]
mov cx, word [eax]
cmp cx, 0x3d
je 0x4173eb
cmp word [esi], 0x3c
jne 0x4173f2
cmp cx, 0x3e
jne 0x4173f2
mov dword [ebp + 0x4c], eax
test bl, bl
je 0x4173f6
add dword [ebp + 0x4c], 2
lea ecx, [ebp + 0x4c]
call fcn.0040bc51
cmp byte [ebp + 0x43], 0
je 0x4174b0
mov eax, dword [ebp + 0x4c]
cmp word [eax], 0x3f
jne 0x4174b0
add dword [ebp + 0x4c], 2
lea ecx, [ebp + 0x7c]
mov byte [ebp + 0x5f], 1
call fcn.0040bc51
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp + 0x3c]
cmp ecx, ebx
je 0x41744d
movzx eax, word [edx]
cmp ebx, eax
je 0x417440
cmp dword [ebp + 0x10], eax
je 0x417440
cmp dword [ebp + 0x24], eax
jne 0x41744d
inc edx
mov ecx, eax
inc edx
mov dword [ebp + 0x3c], ecx
mov dword [ebp + 0x30], ecx
mov dword [ebp + 0x74], edx
cmp dword [ebp + 0xc], edi
je 0x417480
cmp byte [ebp + 0x42], 0
jne 0x417480
cmp ecx, dword [ebp + 0x24]
je 0x417480
lea ecx, [ebp + 0x74]
call fcn.0040bc51
mov edx, dword [ebp + 0x74]
mov ax, word [edx]
cmp ax, 0x30
jb 0x417477
cmp ax, 0x39
jbe 0x417480
cmp ax, 0x2e
je 0x417480
mov dword [ebp + 0x3c], edi
cmp dword [ebp - 0x14], edi
jne 0x417492
cmp dword [ebp + 0x30], edi
jne 0x417492
cmp word [edx], 0x27
mov eax, ebx
je 0x417495
mov eax, dword [ebp + 0x3c]
cmp ebx, eax
jne 0x417547
lea ecx, [ebp + 0x78]
mov dword [ebp + 0x78], edx
call fcn.0040bc51
mov edi, dword [ebp + 0x78]
lea ecx, [esi - 2]
jmp 0x4174c7
mov byte [ebp + 0x5f], 0
jmp 0x417425
mov ax, word [ecx]
call fcn.0040bc38
test al, al
je 0x4174cb
dec ecx
dec ecx
cmp ecx, edi
jae 0x4174b9
mov eax, dword [ebp + 0x4c]
sub ecx, edi
inc ecx
inc ecx
sar ecx, 1
mov esi, ecx
lea ecx, [ebp + 0x78]
mov dword [ebp + 0x78], eax
call fcn.0040bc51
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp + 0x78]
add ecx, 0xfffffffe
jmp 0x4174fa
mov ax, word [ecx]
call fcn.0040bc38
test al, al
je 0x4174fe
dec ecx
dec ecx
cmp ecx, edx
jae 0x4174ec
sub ecx, edx
inc ecx
inc ecx
sar ecx, 1
mov ebx, ecx
cmp esi, ebx
mov eax, esi
jle 0x41750e
mov eax, ebx
test eax, eax
jle 0x41752d
cmp dword [ebp - 0x44], 0
push eax
push edx
push edi
je 0x417523
call dword [fcn.00494564]
jmp 0x417529
call dword [fcn.00494578]
test eax, eax
jne 0x417531
sub esi, ebx
mov eax, esi
cdq
xor ecx, ecx
mov esi, eax
mov dword [ebp + 0x54], esi
mov dword [ebp + 0x58], edx
mov dword [ebp + 0x60], ecx
mov dword [ebp + 0x64], ecx
jmp 0x417948
cmp dword [ebp + 0x24], eax
jne 0x4175f6
fldz
lea eax, [ebp - 4]
fstp qword [ebp - 4]
push eax
lea eax, [ebp + 0x74]
fldz
push eax
fstp qword [ebp - 0x10]
call fcn.0043ad30
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp + 0x4c]
push eax
call fcn.0043ad30
fld qword [ebp - 4]
add esp, 0x10
call fcn.00480544
fld qword [ebp - 0x10]
mov esi, eax
mov dword [ebp + 0x54], esi
mov dword [ebp + 0x58], edx
call fcn.00480544
cmp byte [ebp + 0x7b], 1
mov ecx, eax
mov dword [ebp + 0x60], ecx
mov dword [ebp + 0x64], edx
jg 0x417948
fild qword [ebp + 0x54]
fld qword [ebp - 4]
fucompp
fnstsw ax
test ah, 0x44
jp 0x4175c3
fild qword [ebp + 0x60]
fld qword [ebp - 0x10]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x417948
fld qword [ebp - 4]
fcomp qword [ebp - 0x10]
fnstsw ax
test ah, 0x41
jne 0x4175d8
xor eax, eax
inc eax
jmp 0x417531
fld qword [ebp - 0x10]
fld qword [ebp - 4]
fucompp
fnstsw ax
test ah, 0x44
jp 0x4175ee
xor eax, eax
jmp 0x417531
or eax, 0xffffffff
jmp 0x417531
cmp dword [ebp + 0x10], eax
jne 0x41761d
lea eax, [ebp + 0x54]
push eax
lea eax, [ebp + 0x74]
push eax
call fcn.0043aabb
lea eax, [ebp + 0x60]
push eax
lea eax, [ebp + 0x4c]
push eax
call fcn.0043aabb
add esp, 0x10
jmp 0x417942
cmp dword [ebp + 0x28], 3
jl 0x417b10
lea ecx, [ebp + 0x4c]
mov byte [ebp + 0x6b], 0
call fcn.0040bc51
mov eax, dword [ebp + 0x4c]
cmp word [eax], 0x23
jne 0x417645
inc eax
inc eax
mov dword [ebp + 0x4c], eax
mov byte [ebp + 0x6b], 1
mov bl, byte [ebp + 0x14]
fldz
mov dword [ebp + 4], eax
fstp qword [ebp - 0x1c]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp + 4]
push eax
mov byte [ebp + 0x7b], 0
call fcn.0043ad30
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x4c]
mov dword [ebp + 4], eax
lea eax, [ebp + 0x60]
push eax
lea eax, [ebp + 4]
push eax
call fcn.0043aabb
mov eax, dword [ebp + 4]
add esp, 0x10
cmp word [eax], 0x2e
jne 0x417691
fld qword [ebp - 0x1c]
call fcn.00480544
mov dword [ebp + 0x60], eax
mov dword [ebp + 0x64], edx
mov edi, dword [ebp + 0x28]
cmp edi, 3
jl 0x4177d2
cmp edi, 5
jg 0x4177d2
mov esi, dword [ebp]
push 3
push 0x497808
push esi
call dword [fcn.00494578]
test eax, eax
jne 0x4177d5
cmp edi, 3
je 0x4176f8
mov ax, word [esi + 6]
xor ecx, ecx
mov cx, word [esi + 8]
mov edx, 0xffdf
and eax, edx
and ecx, edx
cmp edi, 4
jne 0x4176fe
cmp ax, 0x41
jne 0x4176e6
xor bl, bl
jmp 0x4176f8
cmp ax, 0x42
je 0x417727
cmp ax, 0x55
jne 0x4177eb
mov bl, 1
mov byte [ebp + 0x7b], 1
jmp 0x417727
cmp edi, 5
jne 0x4177d5
cmp ax, 0x42
jne 0x4177eb
cmp cx, 0x55
jne 0x41771b
mov bl, 1
jmp 0x417727
cmp cx, 0x41
jne 0x4177eb
xor bl, bl
movsx eax, bl
push eax
call fcn.0041094e
cmp byte [ebp + 0x7b], 0
mov esi, eax
mov eax, edx
pop ecx
mov dword [ebp + 0x54], esi
mov dword [ebp + 0x58], eax
mov ecx, esi
je 0x417753
add ecx, 0xfffff
adc eax, 0
shrd ecx, eax, 0x14
shr eax, 0x14
cmp byte [ebp + 0x5f], 0
jne 0x417ca5
xor edi, edi
cmp dword [ebp + 0x30], edi
jle 0x417d10
cmp byte [ebp + 0x7b], 0
je 0x417945
mov dword [ebp - 0x28], eax
and dword [ebp - 0x28], 0x80000000
and eax, 0x7fffffff
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x5c], ecx
fild qword [ebp - 0x5c]
mov dword [ebp - 0x2c], edi
fild qword [ebp - 0x2c]
fchs
faddp st(1)
fcom qword [ebp - 0x1c]
fnstsw ax
test ah, 0x41
jne 0x4177a5
xor eax, eax
fstp st(0)
inc eax
jmp 0x4177bc
fld qword [ebp - 0x1c]
fld st(1)
fucompp
fnstsw ax
fstp st(0)
test ah, 0x44
jp 0x4177b9
xor eax, eax
jmp 0x4177bc
or eax, 0xffffffff
cdq
mov esi, eax
xor ecx, ecx
mov dword [ebp + 0x54], esi
mov dword [ebp + 0x58], edx
mov dword [ebp + 0x60], ecx
mov dword [ebp + 0x64], edi
jmp 0x417948
mov esi, dword [ebp]
cmp edi, 3
jne 0x4177eb
push edi
push 0x497800
push esi
call dword [fcn.00494578]
test eax, eax
je 0x417846
mov edx, dword [ebp + 0x74]
cmp word [edx], 0x3a
jne 0x41795f
mov ax, word [edx + 2]
cmp ax, 0x65
jne 0x41780d
add edx, 4
mov dword [ebp + 0x74], edx
jmp 0x417b19
cmp ax, 0x70
jne 0x417836
add edx, 4
mov dword [ebp + 0x74], edx
xor edi, edi
push edi
push edi
push edi
push edi
push edx
call fcn.00413dfd
xor ecx, ecx
add esp, 0x14
test eax, eax
setg cl
mov esi, ecx
jmp 0x417be4
cmp ax, 0x6b
jne 0x41795f
add edx, 4
mov dword [ebp + 0x74], edx
mov edx, dword [ebp + 0x4c]
xor eax, eax
mov ax, word [edx]
push eax
call fcn.004103b8
add esp, 4
test al, al
je 0x41787c
xor ecx, ecx
mov cx, word [edx + 2]
push ecx
call fcn.004103b8
add esp, 4
test al, al
jne 0x417878
or cx, 0x20
cmp cx, 0x78
jne 0x41787c
mov byte [ebp + 0x6b], 2
xor esi, esi
cmp byte [ebp + 0x6b], 0
jne 0x417894
push esi
push edx
call fcn.00413abe
cdq
pop ecx
pop ecx
mov dword [ebp + 0x60], eax
mov dword [ebp + 0x64], edx
cmp dword [ebp + 0x64], esi
jl 0x417d10
jg 0x4178a8
cmp dword [ebp + 0x60], esi
jbe 0x417d10
cmp dword [ebp + 0x64], esi
jl 0x4178ca
jg 0x4178b5
cmp dword [ebp + 0x60], 0x61
jb 0x4178ca
cmp dword [ebp + 0x64], esi
jg 0x4178ca
jl 0x4178c2
cmp dword [ebp + 0x60], 0x7a
ja 0x4178ca
add dword [ebp + 0x60], 0xffffffe0
adc dword [ebp + 0x64], 0xffffffff
push dword [ebp + 0x60]
call dword [0x494708]
mov cx, ax
and cx, 0x8000
neg cx
mov word [ebp - 0xa2], si
sbb ecx, ecx
and ecx, dword [ebp + 0x60]
cmp ecx, 0x41
mov eax, ecx
cdq
mov dword [ebp + 0x54], eax
mov dword [ebp + 0x58], edx
mov word [ebp - 0xa4], cx
jl 0x417904
cmp ecx, 0x5a
jle 0x417924
cmp ecx, 0x30
jl 0x41790e
cmp ecx, 0x39
jle 0x417924
push ecx
lea eax, [ebp - 0xa4]
push 0x4977f4
push eax
call dword [fcn.0049477c]
add esp, 0xc
cmp byte [ebp + 0x5f], 0
mov ecx, dword [ebp + 0x18]
lea eax, [ebp - 0xa4]
push eax
jne 0x417cb9
push 0x4977e0
call fcn.00435749
mov esi, dword [ebp + 0x54]
mov ecx, dword [ebp + 0x60]
mov edi, dword [ebp + 0x38]
mov dx, word [edi]
test dx, dx
jne 0x417a0a
or esi, dword [ebp + 0x58]
jmp 0x417a69
mov ax, word [esi]
mov word [ebp - 0x50], ax
xor eax, eax
xor ebx, ebx
mov word [ebp - 0x4e], 0x3a
mov word [ebp - 0x4c], 0x5c
mov word [ebp - 0x4a], bx
lea edi, [ebp - 0x48]
stosd dword es:[edi], eax
movsx eax, byte [ebp + 0x14]
push ebx
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.0040cd6c
add esp, 0xc
cmp byte [ebp + 0x5f], bl
jne 0x417cc3
cmp dword [ebp + 0x30], ebx
jle 0x417cca
shrd eax, edx, 0x14
shr edx, 0x14
mov dword [ebp - 0x20], edx
and dword [ebp - 0x20], 0x80000000
and edx, 0x7fffffff
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x24], ebx
fild qword [ebp - 0x64]
fild qword [ebp - 0x24]
fchs
faddp st(1)
fcom qword [ebp - 0x1c]
fnstsw ax
test ah, 0x41
jne 0x4179dd
xor eax, eax
fstp st(0)
inc eax
jmp 0x4179f4
fld qword [ebp - 0x1c]
fld st(1)
fucompp
fnstsw ax
fstp st(0)
test ah, 0x44
jp 0x4179f1
xor eax, eax
jmp 0x4179f4
or eax, 0xffffffff
cdq
mov esi, eax
xor ecx, ecx
mov dword [ebp + 0x54], esi
mov dword [ebp + 0x58], edx
mov dword [ebp + 0x60], ecx
mov dword [ebp + 0x64], ebx
jmp 0x417948
push 0x3d
pop ebx
cmp dx, bx
jne 0x417a2b
cmp esi, ecx
jne 0x417ad5
mov eax, dword [ebp + 0x64]
cmp dword [ebp + 0x58], eax
jne 0x417ad5
jmp 0x417ae7
cmp dx, 0x3e
jne 0x417a37
cmp word [edi + 2], bx
je 0x417a89
cmp dx, 0x3c
jne 0x417a4c
mov ax, word [edi + 2]
cmp ax, bx
je 0x417a73
cmp ax, 0x3e
je 0x417a5b
cmp dx, 0x21
jne 0x417a99
mov ax, word [edi + 2]
cmp ax, bx
jne 0x417a6d
cmp esi, ecx
jne 0x417ae7
mov eax, dword [ebp + 0x64]
cmp dword [ebp + 0x58], eax
je 0x417ad5
jmp 0x417ae7
cmp ax, 0x3e
jne 0x417a83
mov eax, dword [ebp + 0x64]
cmp dword [ebp + 0x58], eax
jg 0x417ad5
jl 0x417ae7
cmp esi, ecx
ja 0x417ad5
jmp 0x417ae7
cmp ax, 0x3c
jne 0x417a99
mov eax, dword [ebp + 0x64]
cmp dword [ebp + 0x58], eax
jl 0x417ad5
jg 0x417ae7
cmp esi, ecx
jb 0x417ad5
jmp 0x417ae7
cmp dx, 0x3e
jne 0x417aaf
mov eax, dword [ebp + 0x64]
cmp dword [ebp + 0x58], eax
jl 0x417ad5
jg 0x417ae7
cmp esi, ecx
jbe 0x417ad5
jmp 0x417ae7
cmp dx, 0x3c
jne 0x417ac5
mov eax, dword [ebp + 0x64]
cmp dword [ebp + 0x58], eax
jg 0x417ad5
jl 0x417ae7
cmp esi, ecx
jae 0x417ad5
jmp 0x417ae7
cmp dx, 0x26
jne 0x417adc
or esi, dword [ebp + 0x58]
je 0x417ad5
or ecx, dword [ebp + 0x64]
jne 0x417ae7
xor esi, esi
jmp 0x417be4
cmp dx, 0x7c
jne 0x417aef
or esi, dword [ebp + 0x58]
je 0x417ad0
xor esi, esi
inc esi
jmp 0x417be4
cmp dx, 0x40
jne 0x417d10
xor eax, eax
or esi, dword [ebp + 0x58]
je 0x417b01
inc eax
xor esi, esi
or ecx, dword [ebp + 0x64]
je 0x417b09
inc esi
xor esi, eax
jmp 0x417be4
cmp dword [ebp + 0xc], edi
je 0x417d10
push edx
call fcn.0040eec0
pop ecx
push eax
mov dword [ebp + 0x74], eax
call dword [fcn.004944c4]
mov ecx, dword [ebp + 0x74]
xor ebx, ebx
mov bx, word [ecx]
mov edi, eax
and ebx, 0xffdf
cmp bx, 0x41
jb 0x417b6a
cmp bx, 0x5a
ja 0x417b6a
cmp word [ecx + 2], 0x3a
jne 0x417b6a
cmp word [ecx + 4], 0
jne 0x417b6a
call dword [0x494228]
xor ecx, ecx
mov cl, bl
sub cl, 0x41
mov esi, eax
shr esi, cl
and esi, 1
jmp 0x417be4
test edi, edi
jle 0x417b86
xor eax, eax
mov ax, word [ecx + edi*2 - 2]
push eax
call fcn.0040bcc9
add esp, 4
test al, al
je 0x417b86
mov bl, 1
jmp 0x417ba6
xor bl, bl
jmp 0x417bac
xor eax, eax
lea edx, [ecx + edi*2]
mov ax, word [edx]
push eax
call fcn.0040bcc9
add esp, 4
test al, al
je 0x417ba9
and word [edx], 0
mov ecx, dword [ebp + 0x74]
dec edi
jns 0x417b8a
xor edi, edi
inc edi
xor esi, esi
cmp edi, esi
je 0x417be4
cmp dword [ebp - 0x54], esi
je 0x417bd6
xor eax, eax
mov ax, word [ecx]
cmp ax, si
je 0x417bd6
cmp word [ecx + 2], 0x3a
jne 0x417bd6
push eax
call fcn.0047f5e8
test eax, eax
pop ecx
je 0x417be4
mov ecx, dword [ebp + 0x74]
movsx eax, bl
push eax
push ecx
call fcn.0047f813
pop ecx
pop ecx
mov esi, eax
xor eax, eax
cmp dword [ebp - 0x34], eax
je 0x417bf2
test esi, esi
sete al
jmp 0x417bf7
test esi, esi
setne al
mov edx, dword [ebp + 0x20]
mov dword [ebp + 0x2c], eax
add eax, 0x30
push 2
pop edi
mov word [edx], ax
add edx, edi
cmp byte [ebp + 0x53], 0
mov dword [ebp + 0x20], edx
je 0x417cfa
mov esi, dword [ebp + 0x48]
mov cx, word [esi]
test cx, cx
je 0x417ccf
cmp cx, 0x5b
je 0x417c68
cmp cx, 0x5d
je 0x417c68
cmp cx, 0x28
je 0x417c68
cmp cx, 0x29
je 0x417c68
cmp cx, 0x26
je 0x417c68
cmp cx, 0x7c
jne 0x417c55
mov ax, word [esi + 2]
call fcn.0040bc38
test al, al
jne 0x417c68
cmp cx, 0x40
je 0x417c68
mov eax, ecx
call fcn.0040bc38
test al, al
je 0x417c7d
jmp 0x417c70
mov word [edx], cx
add edx, edi
mov dword [ebp + 0x20], edx
add esi, edi
mov cx, word [esi]
test cx, cx
mov dword [ebp + 0x48], esi
jne 0x417c24
cmp word [esi], 0
je 0x417ccf
lea ecx, [ebp + 0x1c]
call fcn.0043092f
lea ecx, [ebp + 0x34]
call fcn.0043092f
lea ecx, [ebp + 0x44]
call fcn.0043092f
mov esi, dword [ebp + 0x48]
xor edi, edi
jmp 0x417012
push dword [ebp + 0x18]
push eax
push ecx
push dword [ebp + 0x7c]
call fcn.0040ed0d
add esp, 0x10
mov esi, eax
jmp 0x417d15
push dword [ebp + 0x7c]
call fcn.00435749
jmp 0x417d15
push dword [ebp + 0x18]
push edx
push eax
jmp 0x417caa
or esi, 0xffffffff
jmp 0x417d15
mov eax, dword [ebp - 0x30]
mov word [eax - 6], 0x23
mov word [eax - 4], 0x26
lea ecx, [ebp + 0x2c]
add eax, 0xfffffffe
push ecx
mov ecx, dword [ebp + 0x18]
mov word [eax], 0x3d
and word [edx], 0
push eax
call fcn.004707fb
mov dword [ebp + 0x2c], eax
cmp dword [ebp - 0x40], 0
je 0x417d0b
xor eax, eax
cmp dword [ebp + 0x2c], eax
sete al
mov dword [ebp + 0x2c], eax
mov esi, dword [ebp + 0x2c]
jmp 0x417d15
mov esi, 0x80070057
lea ecx, [ebp + 0x1c]
call fcn.0043092f
lea ecx, [ebp + 0x34]
call fcn.0043092f
lea ecx, [ebp + 0x44]
call fcn.0043092f
pop edi
mov eax, esi
pop esi
pop ebx
add ebp, 0x6c
leave
ret 0xc